使用WIF的Ping Federate的Angular和Web API

时间:2015-11-25 20:02:29

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

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

Q1

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

Q2

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

Q3

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

感谢您的帮助......

1 个答案:

答案 0 :(得分:2)

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

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

  • WS馈
  • WS-信任
  • WS-Security的
  • WS-安全
  • WS寻址

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

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

这就是我想象的流程:

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