【问题标题】:Claims Based Security between Web Client, ASP.Net MVC 4 and ASP.Net WebAPIWeb 客户端、ASP.Net MVC 4 和 ASP.Net WebAPI 之间基于声明的安全性
【发布时间】:2013-02-22 01:16:35
【问题描述】:

鉴于以下各方:

基于浏览器的客户端
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 调用中传递令牌?

【问题讨论】:

    标签: wif asp.net-web-api claims-based-identity


    【解决方案1】:

    嗯 - 如果您使用 SAML,您可以立即执行此操作。

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

    在 Web API 中,您可以使用 SAML 使用 thinktecture 身份模型。对于 AJAX 调用,提供一种从 JS 检索 SAML 令牌并将其通过授权标头发送到 Web API 的方法。

    这不是最优的。但是对于一直执行 JWT(这将是首选方式) - 现在缺少一些位(例如,IdSrv 仅支持对称签名,我的 JWT 处理程序不支持引导上下文、MS JWT 处理程序和对称签名通过配置也是一个问题)。

    我正在处理这个问题。但就目前而言,这种情况还有些粗糙。

    【讨论】:

    • 嗯 - 当然没有 cookie。各种组件存在于不同的盒子上(可能还有不同的域——如果不是今天——也许是明天)。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2010-09-18
      • 1970-01-01
      • 2016-11-12
      • 2014-05-03
      • 2016-07-01
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 2012-12-19
      相关资源
      最近更新 更多