我有一个MVC Web应用程序,它使用OWIN/openid connect通过https://login.windows.net/common/验证用户身份。它基于azure/office 365示例:https://github.com/OfficeDev/Research-Project-Code-Sample。如何使用OWIN使用令牌直接进行OpenID Connect验证
如果我理解正确的认证流程是这样的:
- 应用程序检查(基于一个cookie),如果已经有一个身份验证的用户
- 如果没有,那么它重定向到供应商授权页面(login.microsoftonline.com)
- 页面重定向到我的应用程序的授权码
- 我的应用程序的访问令牌的授权码再次调用提供者(或者是它的一个id_token?)
- 我的应用程序(OWIN组件)提取各种openid属性,并将它们设置在线程当前主体
工作正常。
现在我想让我的MVC应用程序调用我的Web API应用程序。 Web API应用程序永远不会由浏览器直接调用,而总是由MVC客户端调用。 Web API应用程序不使用Cookie,如果使用错误或陈旧的身份验证信息发出请求,则不能重定向。 Web API应用程序应该能够使用MVC应用程序获得的身份验证令牌进行调用,并使用它在执行线程上设置ClaimsPrincipal。另一种方法可能是让我在MVC应用程序中使用一些自定义解决方案来加密用户信息并将其发送到Web API,但这是最后的手段。我更喜欢使用标准的owin。