基于声明的Web客户端,ASP.Net MVC 4和ASP.Net WebAPI之间的安全性

鉴于以下各方:

浏览器客户端
ASP.Net MVC 4 Web应用程序
ASP.Net Web API服务
安全令牌服务(STS)即Thinktecture IdentityServer
(注意:Web应用程序和WebAPI服务位于不同的盒子上)

我想得到一个类似于这个工作的流程:

用户导航到WebApp,应用程序在请求中看不到有效的令牌,并将用户重定向到STS进行验证。 用户登录到STS,并在成功验证后重定向回WebApp。 WebApp会看到有效的令牌并授予用户访问权限。 用户尝试在WebApp上执行操作,这需要对WebAPI进行服务调用。 WebApp通过服务请求传递用户令牌。 WebAPI服务会查看令牌,禁止访问并返回错误,或代表用户授权请求并返回结果。

另外,我希望客户端能够通过AJAX调用直接对WebAPI服务进行服务调用。

到目前为止,我可以使用Web应用程序重定向到STS并返回到工作流,但是如何将令牌从Web应用程序传递到Web API服务?

另外,如何让JavaScript客户端在AJAX调用中传递令牌?


那么 - 如果你使用SAML,你可以立即做到这一点。

网站登录返回一个SAML令牌,saveBootstrapContext功能保存令牌供以后使用 - 并且您可以将其转发给您的web api。

在Web API中,您可以使用SAML usign thinktecture identitymodel。 对于AJAX调用,提供一种从JS检索SAML令牌并将其在授权标头上发送给Web API的方法。

这不是最佳的。 但是对于通过JWT来完成(这将是首选方式) - 现在有些位缺失(例如,IdSrv只支持对称签名,我的JWT处理程序不支持引导上下文,MS JWT处理程序和对称签名配置也是一个问题)。

我正在为此工作。 但目前这种情况有一些粗糙的优势。


如果两个服务都位于同一个域中,则可以使用cookie。

链接地址: http://www.djcxy.com/p/71807.html

上一篇: Claims Based Security between Web Client, ASP.Net MVC 4 and ASP.Net WebAPI

下一篇: MVC3: HTTP 302 Redirect Error (due to asp.net authentication)