我有以下架构:
MVC网站< - > Web API
JS / Mobile-app / etc< - > Web API(与上面相同的Web API)
ADFS 3.0
1 - MVC网站的客户端用户将使用ADFS 3.0中的WS-Federation进行身份验证。登录通过ACS登录屏幕处理。
2 - 直接使用WebAPI
2a - 尝试直接访问Web API的客户端(来自JS或移动应用程序)也将通过ACS登录屏幕进行身份验证。这是在Web API的授权服务器(OWIN中间件)中设置的?经过身份验证后,客户端可以从Web API访问资源。
2b - MVC网站尝试从Web API访问资源。客户端用户已经过身份验证(通过ADFS进行SSO)。我们仍然需要请求JWT呈现给Web API(通过在请求'Authorization'标题中发送它),然后在Web API端验证JWT。
我的问题实际上以2b为中心。我可以在C#中请求令牌,并按照重定向,但这听起来很难,我在网上看到了这个编码的零例子。我看过客户打开WSTrustChannelFactory
并向其发出RST
的示例(我已经完成了这项工作,但我实际上无法获得JWT,只需GenericXmlToken
)。
我最感兴趣的是我应该尝试为Web API发布JWT的策略,该策略可以呈现给Web API,供我的MVC客户端用户使用。