我正在使用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页面?
感谢您的帮助......
答案 0 :(得分:2)
由于API的RESTful特性,他们无法进行HTTP重定向。即使它们可能在AJAX调用期间也不会影响浏览器。
开箱即用WIF仅支持以下协议:
我建议对Angular / WebAPI部分使用OAuth 2.0隐式授权类型。
话虽如此,WIF和OAuth提供的基于声明的身份确实是免费的。您可以将WIF similair的OAuth扩展名编写为此处引用的扩展名:https://msdn.microsoft.com/en-us/library/azure/gg193416.aspx
这就是我想象的流程: