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)实现客户端凭据授予类型?
还提供一些可能对我有帮助的样本或链接?
提前致谢.
有一个如何开始使用 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,那么您需要使用资源所有者,但是如果应用程序本身需要访问权限,则客户端凭据是要走的路。
但一般来说,大多数实现都使用授权代码流,因此,如果您可以形成安全立场,请将用户重定向到您托管的页面以获取其凭据,而不是通过资源所有者流通过网络发送它们。
| 归档时间: |
|
| 查看次数: |
8619 次 |
| 最近记录: |