我是OAuth 2.0的新手。
我已经公平地阅读了OAuth 2.0 doc,我看到有四种获取授权的方法。
获得授权的类型:
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凭据有效,则auth服务器会授予访问令牌。
第5步:借助此访问令牌,客户端应用程序会请求资源服务器进行进一步操作,例如创建付款以及执行付款。
我的问题:
我正在使用ASP.NET Web API for authorization server并使用OWIN.OAuth生成访问令牌,刷新令牌,授权以及授权客户端应用所需的所有内容。
但是,在这个链接(OWIN OAuth 2.0 Authorization Server)中,我发现,web api使用"Resource Owner Password Credentials Grant"授权客户端应用程序,并且为在web api中实现Owin.OAuth而提供的示例很棒,但是我在我脑海里漫游有很多困惑。
获取授权的哪种方式适合我的流程? (客户端凭据流或资源所有者密码凭据流)
如何使用ASP.NET Web实现客户端凭据授予类型 API(OWIN OAuth)?
还提供一些可能对我有帮助的示例或链接?
提前致谢。
答案 0 :(得分: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);
}
显然,您需要继续验证实际的客户端ID /机密可能存在于某个本地数据库中,然后再继续并将上下文设置为已验证。
在决定使用哪个流时,您需要问自己,如果应用程序代表实际用户请求访问您的API,那么您需要使用资源所有者,但是如果应用程序本身需要访问权限,那么客户端凭证是可行的方法。
一般而言,大多数实现使用授权代码流,因此如果您可以形成安全立场点,请将用户重定向到您托管的页面以获取其凭据,而不是通过资源所有者流程通过线路发送它们。