【问题标题】:using WIF in ASP.NET Web API Service在 ASP.NET Web API 服务中使用 WIF
【发布时间】:2012-08-08 12:13:47
【问题描述】:

我正在尝试做这样的事情:

  1. 我有一个 MVC4 Web 应用和一个 Web-API 服务(托管在 azure 中的两个不同角色上)
  2. 另一个角色运行 CustomSTS1。
  3. MVC Web 应用信任 CustomSTS1
  4. 现在客户登录到他被重定向到 STS 登录页面的站点。
  5. 登录后,他会被重定向回 MVC 网站。
  6. 客户从该网站执行操作,然后调用 Web-API 服务。

我在 Web 应用程序中有 SAML 令牌,我将其传递给 WebAPI 服务。

现在,当我尝试在 Web API 端验证 SAML 令牌时,我得到一个

Message=ID1032: At least one 'audienceUri' must be specified in the SamlSecurityTokenRequirement when the AudienceUriMode is set to 'Always' or 'BearerKeyOnly'. Either add the valid URI values to the AudienceUris property of SamlSecurityTokenRequirement,  or turn off checking by specifying an AudienceUriMode of 'Never' on the SamlSecurityTokenRequirement.

这没有 Web API 服务信任 CustomSTS1

一旦我建立了信任, 每当我尝试向 WEB API 服务发出 HTTP Get 请求时,我总是会收到 HTTP 401: UNAUTHORIZED。

现在,我的问题是,(我知道我目前的做法肯定是错误的)

  1. 如何设置与 CustomSTS1 的信任关系,以便 WebAPI 服务能够代表登录到 MVC 站点的用户执行 ActAS?

  1. 这个架构错了吗?
  2. 还有其他方法可以实现吗?

【问题讨论】:

  • 可以分享webapi服务配置和web应用配置吗

标签: asp.net asp.net-mvc asp.net-web-api wif


【解决方案1】:

这种方法在概念上是错误的。 MVC 应用程序应使用 ActAs 为 STS 中的 Web API 协商一个新令牌。这就是它传统上适用于 SOAP 服务的方式。然而,Web API 正在远离 SAML,因为它是一种依赖于不同 WS-* 规范的复杂格式。如果您想在该级别支持 SSO,OAuth 2.0 正在成为该领域的标准。

另一种方法是在 MVC 应用程序和 Web API 之间建立隐式信任,因此从 MVC 应用程序对 Web API 的所有调用都是通过更标准的 Http 身份验证机制完成的,例如使用一组特定凭据的基本身份验证只有 MVC 应用程序知道。 MVC 应用程序中有关已登录用户的信息作为附加信息传递。

问候, 巴勃罗。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多