如何开始使用OAuth客户端证书来保护使用OWIN Oauth的WebApi?

我是OAuth 2.0的新手。

我已经阅读了OAuth 2.0文档,并且看到有四种类型的获取授权的方法。

获得授权的类型:

1.Implicit Grant
2.Resource Owner Password Credentials Grant
3.Client Credentials Grant
4.Authorization Code Grant

在我的情况下,我有客户端应用程序,资源所有者,资源服务器和授权服务器。

资源服务器资源所有者向他/她的凭证注册的网站。

客户端应用程序是注册到资源服务器并获取客户端应用程序凭证以供将来访问它的第三方网站。

授权服务器检查来自客户端应用程序的客户端凭据并将访问令牌授予客户端应用程序。

让我们考虑一下, 资源服务器为“www.serversite.com”,授权服务器为“www.authserver.com”,客户端应用程序为“www.clientapp.com”

流:

步骤1:同时假定www.serversite.com为支付网关站点,客户必须将“www.serversite.com”集成到“www.clientapp.com”中,以创建,执行和退款。

步骤2:因此,客户端“www.clientapp.com”在服务器“www.serversite.com”中创建应用程序并获取API凭证。

步骤3:使用这些API凭证,客户端“www.clientapp.com”向auth服务器“www.authserver.com”发出访问令牌请求。

步骤4:如果来自客户端应用程序的API凭证有效,则认证服务器授予访问令牌。

第5步:使用此访问令牌,客户端应用程序请求资源服务器进行进一步操作,例如创建付款以及执行付款。

我的问题:

我使用ASP.NET Web API作为授权服务器,并使用OWIN.OAuth生成访问令牌,刷新令牌,授权以及授权客户端应用程序所需的所有内容。

但是,在这个链接(OWIN OAuth 2.0授权服务器)中,我发现web api使用“资源所有者密码凭证授予”来授权客户端应用程序,并且提供用于在web api中实现Owin.OAuth的示例非常棒,但我有很多混乱在我心中漫游。

  • 哪种获得授权的方式适合我的流程? ( 客户端凭证流或资源所有者密码凭证流

  • 如何使用ASP.NET Web API实现客户端凭证授予类型(OWIN OAuth)?

  • 还提供一些可能对我有帮助的示例或链接?

  • 提前致谢。


    这里有一个如何开始使用asp.net网站的例子,具体如下:

    http://www.asp.net/aspnet/overview/owin-and-katana/owin-oauth-20-authorization-server

    我引用:

    private Task GrantClientCredentails(OAuthGrantClientCredentialsContext context)
    {
     var identity = new ClaimsIdentity(new GenericIdentity(
        context.ClientId, OAuthDefaults.AuthenticationType), 
        context.Scope.Select(x => new Claim("urn:oauth:scope", x))
        );
    
     context.Validated(identity);
    
     return Task.FromResult(0);
    }
    

    很显然,在继续之前,您需要继续并验证实际的客户端ID /秘密是否存在于本地数据库中,然后将上下文设置为经过验证。

    在决定使用哪个流程方面,您需要问自己,如果应用程序代表实际用户请求访问您的API,那么您需要使用资源所有者,但是如果应用程序本身需要访问,则Client Credentials是要走的路。

    一般来说,大多数实现使用授权代码流,所以如果您可以形成安全立场,请将用户重定向到您承载的凭证以取得凭据,而不是通过资源所有者流在线路上发送。

    链接地址: http://www.djcxy.com/p/20645.html

    上一篇: How to start with OAuth Client Credentials to protect WebApi using OWIN Oauth?

    下一篇: Which exception terminates process ? (iis's w3wp)