如何使用OAW客户端凭据开始使用OWIN Oauth保护WebApi?

Raj*_*nan 7 api oauth oauth-2.0 asp.net-web-api owin

我是OAuth 2.0的新手.

我已经相当阅读了OAuth 2.0文档,我看到有四种类型的方法可以获得授权.

获得授权的类型:

1.Implicit Grant
2.Resource Owner Password Credentials Grant
3.Client Credentials Grant
4.Authorization Code Grant
Run Code Online (Sandbox Code Playgroud)

就我而言,我有客户端应用程序,资源所有者,资源服务器和授权服务器.

资源服务器资源所有者使用他/她的凭证注册的网站.

客户端应用程序是第三方网站,它注册到资源服务器并获取客户端应用程序凭据以便将来访问它.

授权服务器从客户端应用程序检查客户端凭据,并将访问令牌授予客户端应用程序.

让我们考虑,资源服务器为"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凭据有效,则auth服务器授予访问令牌.

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

我的问题:

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

但是,在这个链接(OWIN OAuth 2.0授权服务器)中,我发现,web api使用"资源所有者密码凭据授权"授权客户端应用程序,并且为在web api中实现Owin.OAuth提供的示例很棒,但我有很多困惑在我心中漫游.

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

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

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

提前致谢.

gdp*_*gdp 3

有一个如何开始使用 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);
}
Run Code Online (Sandbox Code Playgroud)

显然,您需要先验证实际的客户端 ID/秘密是否存在于本地数据库中,然后再将上下文设置为已验证。

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

但一般来说,大多数实现都使用授权代码流,因此,如果您可以形成安全立场,请将用户重定向到您托管的页面以获取其凭据,而不是通过资源所有者流通过网络发送它们。