Angularjs 使用WIF的Ping联邦成员的Angular和Web API

Angularjs 使用WIF的Ping联邦成员的Angular和Web API,angularjs,asp.net-web-api,wif,pingfederate,Angularjs,Asp.net Web Api,Wif,Pingfederate,我使用Ping在Angular/.netwebapi堆栈中使用WIF对用户进行身份验证。WIF只需在MVC或web表单应用程序的web.config中输入正确的配置,即可开箱即用。它会拦截对请求的页面/控制器的任何调用,如果没有可用的令牌,则重定向到Ping进行身份验证 Q1 在我的堆栈中,无法作为此应用程序的web部分使用的是html/Angular。我可以将Ping配置放在webapi配置文件中,然后当angular调用api时,WIF将拦截它,并(希望)将用户重定向到Ping。但不确定we

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

Q1

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

问题2

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

第三季度

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


感谢您的帮助…

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

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

  • WS-Fed
  • WS-Trust
  • WS-Security
  • WS-SecurityPolicy
  • WS-Addressing
我建议对Angular/WebAPI部分使用OAuth 2.0隐式授权类型

话虽如此,WIF和OAuth提供的基于声明的身份确实是互补的。您可以为WIF similair编写一个OAuth扩展名,扩展名如下:

这就是我想象中的流程:

  • Angular应用程序从受WIF保护的API请求信息
  • API返回状态代码401
  • Angular应用程序执行重定向到Ping OAuth授权端点
  • 如果用户还没有与SSO IdP服务器的现有会话,则进行身份验证
  • 将承载令牌返回给Angular应用程序
  • 承载令牌添加到授权标头并发送到API
  • WIF截获请求,提取承载令牌并调用Ping OAuth令牌端点来验证令牌
  • Ping返回一个令牌,该令牌包含您正在查找的“声明”信息,然后将这些声明注入WIF

  • 你在使用某种集成工具包吗?是的,我在使用WIF.net集成。我将遵循以下步骤:PingFederate可以充当与WS-Trust兼容的STS。您的应用程序收集用户名/密码,并以格式正确的WS-Trust-Authn消息将其转发到PF,然后您将返回WS-Trust断言。你可以在这里看到PingFed的WS-Trust配置:是的,我想我必须走更远的路。。。WIF太容易了。在这里找到了一个纯角度客户端解决方案,尽管@Vaibhav您的链接现在转到了404。你能更新一下吗?