Angular 和 Web API 使用 WIFI 的 Pingfederate
Angular and Web API with Ping Federate using WIF
我正在使用 Ping 在 Angular/.NET Web API 堆栈中使用 WIF 对用户进行身份验证。 WIF 开箱即用,只需在 MVC 或 Web 窗体应用程序的 web.config 中放入正确的配置即可。它拦截对 page/controller 请求的任何调用,如果没有可用令牌,则重定向到 Ping 以进行身份验证。
Q1
在我的堆栈中,无法作为此应用程序的 Web 部分工作的是 html/Angular。我可以将 Ping 配置放入 Web api 配置文件中,然后当 angular 调用 api 时,WIF 将拦截它并(希望)将用户重定向到 ping。但不确定 web api 是否可以进行 http 重定向。此外,可能不执行 api 调用的页面无需身份验证即可正常加载...
Q2
假设问题 1 已解决并且用户在 ping 中验证了自己,ping 将需要将该断言发送到网络 api 层而不是 html/Angular,因为它是 POST 回复。这很好,web api 将检查 Claims 对象以获取用户信息。之后我们需要重定向用户返回他试图访问的页面,现在,应用程序将不再知道。还有如何从 web api.
实现 http 重定向
Q3
有没有办法 Ping post 到 html/angular 页面?
感谢您的帮助...
由于 API 的 RESTful 性质,他们将无法执行 HTTP 重定向。即使他们可以在 AJAX 调用期间进行,也不会影响浏览器。
开箱即用的 WIF 仅支持以下协议:
- WS-Fed
- WS-Trust
- WS-Security
- WS-Security政策
- WS-Addressing
我建议对 Angular/WebAPI 部分使用 OAuth 2.0 隐式授权类型。
也就是说,WIF 和 OAuth 提供的 claims-based 身份确实是互补的。您可以为 WIF 编写一个类似于此处引用的 OAuth 扩展:https://msdn.microsoft.com/en-us/library/azure/gg193416.aspx
这是我想象中的流程:
- Angular 应用请求来自 WIF 保护的信息 API
- API returns 状态码401
- Angular 应用执行重定向到 Ping OAuth 授权端点
- 如果用户还没有现有的 session 与 SSO IdP 服务器
,则用户进行身份验证
- 不记名令牌返回到 Angular 应用程序
- 不记名令牌添加到授权 header 并发送到 API
- WIF 拦截请求,提取 Bearer 令牌并调用 Ping OAuth 令牌端点来验证令牌
- Ping returns 具有您正在寻找的 "Claims" 信息的令牌,然后将这些声明注入 WIF。
我正在使用 Ping 在 Angular/.NET Web API 堆栈中使用 WIF 对用户进行身份验证。 WIF 开箱即用,只需在 MVC 或 Web 窗体应用程序的 web.config 中放入正确的配置即可。它拦截对 page/controller 请求的任何调用,如果没有可用令牌,则重定向到 Ping 以进行身份验证。
Q1
在我的堆栈中,无法作为此应用程序的 Web 部分工作的是 html/Angular。我可以将 Ping 配置放入 Web api 配置文件中,然后当 angular 调用 api 时,WIF 将拦截它并(希望)将用户重定向到 ping。但不确定 web api 是否可以进行 http 重定向。此外,可能不执行 api 调用的页面无需身份验证即可正常加载...
Q2
假设问题 1 已解决并且用户在 ping 中验证了自己,ping 将需要将该断言发送到网络 api 层而不是 html/Angular,因为它是 POST 回复。这很好,web api 将检查 Claims 对象以获取用户信息。之后我们需要重定向用户返回他试图访问的页面,现在,应用程序将不再知道。还有如何从 web api.
实现 http 重定向Q3
有没有办法 Ping post 到 html/angular 页面?
感谢您的帮助...
由于 API 的 RESTful 性质,他们将无法执行 HTTP 重定向。即使他们可以在 AJAX 调用期间进行,也不会影响浏览器。
开箱即用的 WIF 仅支持以下协议:
- WS-Fed
- WS-Trust
- WS-Security
- WS-Security政策
- WS-Addressing
我建议对 Angular/WebAPI 部分使用 OAuth 2.0 隐式授权类型。
也就是说,WIF 和 OAuth 提供的 claims-based 身份确实是互补的。您可以为 WIF 编写一个类似于此处引用的 OAuth 扩展:https://msdn.microsoft.com/en-us/library/azure/gg193416.aspx
这是我想象中的流程:
- Angular 应用请求来自 WIF 保护的信息 API
- API returns 状态码401
- Angular 应用执行重定向到 Ping OAuth 授权端点
- 如果用户还没有现有的 session 与 SSO IdP 服务器 ,则用户进行身份验证
- 不记名令牌返回到 Angular 应用程序
- 不记名令牌添加到授权 header 并发送到 API
- WIF 拦截请求,提取 Bearer 令牌并调用 Ping OAuth 令牌端点来验证令牌
- Ping returns 具有您正在寻找的 "Claims" 信息的令牌,然后将这些声明注入 WIF。