【问题标题】:Angular and Web API with Ping Federate using WIFAngular 和 Web API 与 Pingfederate 使用 WIFI
【发布时间】:2015-12-02 00:31:09
【问题描述】:

我正在使用 Ping 通过 WIF 对 Angular/.NET Web API 堆栈中的用户进行身份验证。 WIF 开箱即用,只需在 MVC 或 Web 窗体应用程序的 web.config 中放入正确的配置即可。它拦截对请求的页面/控制器的任何调用,如果没有可用的令牌,则重定向到 Ping 进行身份验证。

第一季度

在我的堆栈中,无法作为此应用程序的 Web 部分工作的是 html/Angular。我可以将 Ping 配置放入 web api 配置文件中,然后当 angular 调用 api 时,WIF 将拦截它并(希望)将用户重定向到 ping。但不确定 web api 是否可以进行 http 重定向。此外,可能不执行 api 调用的页面无需身份验证即可正常加载...

第二季度

假设问题 1 已解决并且用户通过 ping 验证自己,ping 需要将该断言发送到 web api 层而不是 html/Angular,因为它是一个 POST 响应。这很好,web api 将检查 Claims 对象以获取用户信息。之后,我们需要将用户重定向到他试图访问的页面,现在,应用程序将不再知道该页面。还有如何从web api实现http重定向。

第三季度

有没有办法让 Ping 发布到 html/angular 页面?

感谢您的帮助...

【问题讨论】:

标签: angularjs asp.net-web-api wif pingfederate


【解决方案1】:

由于 API 的 RESTful 特性,它们将无法执行 HTTP 重定向。即使他们可以在 AJAX 调用期间,也不会影响浏览器。

开箱即用的 WIF 仅支持以下协议:

  • WS-Fed
  • WS 信任
  • WS-安全性
  • WS-SecurityPolicy
  • WS 寻址

我建议对 Angular/WebAPI 部分使用 OAuth 2.0 隐式授权类型。

话虽如此,WIF 和 OAuth 提供的基于声明的身份确实是互补的。您可以为 WIF 编写一个类似于此处引用的 OAuth 扩展:https://msdn.microsoft.com/en-us/library/azure/gg193416.aspx

这是我想象的流程的样子:

  1. Angular 应用从受 WIF 保护的 API 请求信息
  2. API 返回状态码 401
  3. Angular 应用执行重定向到 Ping OAuth 授权端点
  4. 如果用户尚未与 SSO IdP 服务器建立会话,则进行身份验证
  5. 不记名令牌返回到 Angular 应用程序
  6. 不记名令牌添加到授权标头并发送到 API
  7. WIF 拦截请求,提取 Bearer 令牌并调用 Ping OAuth 令牌端点来验证令牌
  8. Ping 返回一个包含您要查找的“声明”信息的令牌,然后将这些声明注入 WIF。

【讨论】:

  • 是的,我想我将不得不走更远的路... WIF 是如此简单。尽管andreareginato.github.io/oauth-ng 在这里找到了一个纯角度客户端解决方案
  • @Vaibhav 您的链接现在转到 404。可以更新一下吗?
猜你喜欢
  • 2016-01-12
  • 2013-04-01
  • 2018-11-04
  • 1970-01-01
  • 1970-01-01
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 2018-01-09
相关资源
最近更新 更多