在我的实现中,我使用OpenID-Connect服务器(Identity Server v3)来验证
Asp.net MVC 5应用程序(使用AngularJS前端)
我打算使用OID代码流(使用Scope Open_ID)来验证客户端(RP).对于OpenID连接中间件,我使用的是OWIN(Katana Project)组件.
在实现之前,我想要使用OWIN了解反向通道令牌请求,刷新令牌请求过程等.但我无法找到此类实现的任何文档(大多数可用示例使用隐式流).
我可以在https://github.com/IdentityServer/IdentityServer3.Samples/tree/master/source找到ID Server v3的通用代码流实现的示例
我正在寻找一个使用OWIN中间件的类似的?有没有人有任何指针?
解决方法
OpenID Connect中间件不支持代码流:
http://katanaproject.codeplex.com/workitem/247(虽然已在ASP.NET 5版本中修复).
实际上,只有正式支持隐式流(id_token),你必须使用response_mode = form_post扩展名.尝试使用授权代码流只会导致在回调期间抛出异常,因为它无法从身份验证响应中提取(缺少)id_token.
虽然不是直接支持,但您也可以使用混合流(代码id_token(令牌)),但是由您来实现令牌请求部分.您可以参见https://github.com/aspnet-contrib/AspNet.Security.OpenIdConnect.Server/blob/dev/samples/Nancy/Nancy.Client/Startup.cs#L82-L115作为示例.