OAuth 2.0 代码授权流程

Posted

技术标签:

【中文标题】OAuth 2.0 代码授权流程【英文标题】:OAuth 2.0 Code Grant flow 【发布时间】:2016-10-15 06:06:00 【问题描述】:

每个授权类型都有一个 OAuth 2.0 授权服务器的 sample implementation 和示例工作流。

IETF 有一个针对 Code Grant Flow 的 OAuth 2.0 规范。 当您查看 IETF 代码授权流程图表中的步骤“D”和“E”时,它们似乎没有在示例实现中实现(第一个链接)。

示例实现中的步骤 D 和 E 在哪里? 我知道这是一个尚未准备好生产的示例实现,但我认为它将遵循 OAuth 2.0 的规范。

在示例应用程序中,客户端获取代码,但不会将其转发到 OAuth 服务器以获取令牌。 实际上,它获取的令牌包括步骤 3 中已经存在的代码。

【问题讨论】:

【参考方案1】:

好的,我下载了Microsoft.Owin的源码并通过代码调试。

DotnetOAuth 客户端库在后台发送令牌请求。 我在使用 Fiddler 时看不到它,因为它使用 WebRequest 对象,因此不会被 Fiddler ootb 捕获!

令牌请求包含代码令牌并且它也得到验证

它将在

中得到验证

ReceiveAuthenticationToken 事件处理程序。

代码令牌在此处创建:

private void CreateAuthenticationToken(AuthenticationTokenCreateContext ctx)

    var code = Guid.NewGuid().ToString("n") + Guid.NewGuid().ToString("n");
    ctx.SetToken(code);
    _authenticationCodes[ctx.Token] = ctx.SerializeTicket(); <-- stored in a concurrentDictionary as the key for the auth ticket, for demonstration purposes only
// delete the entry, must only be used once

【讨论】:

以上是关于OAuth 2.0 代码授权流程的主要内容,如果未能解决你的问题,请参考以下文章

Owin OAuth 2.0密码授权流程

(转)OAuth 2.0授权协议详解和流程

关于 OAuth 2.0 授权流程的问题

开放平台OAuth 2.0授权开发实践

OAuth 2.0实现分布式认证授权-测试以及总结(10大结局)

spring-security-oauth2.0 SSO大体流程图