通过 Web API 针对 ADFS 验证 Angular 2
authenticate Angular 2 against ADFS via Web API
我有一个 angular 2 应用程序、一个带有 OWIN 管道 (.NET 4.6) 的 Web API 和一个 ADFS 3.0。每个使用 angular 2 应用程序的用户都需要通过 ADFS 进行身份验证和授权,如果他已经登录域,他应该自动登录到应用程序(单点登录)
类似的东西:
我阅读了大量有关如何实现该目标的链接和代码,但我未能将各个部分组合在一起。
据我了解,ADFS 3.0 仅支持 OAuth 2 授权代码流,它在 Web 本身上分别不受支持或建议使用 JS 应用程序。
我不太确定它是哪个,但事实是我不能't/shouldn使用它。
我知道因此我必须在我的网络 API 所在的网络服务器上实施某种身份验证服务器(可能是 IdentityServer 3 或其他东西 "homemade")。
这让我认为我应该使用 ADFS 作为外部登录,例如 google,或者 facebook,这将导致以下工作流程
- 用户请求令牌
- Web API 检查用户是否已经登录域
- 登录了吗?
- 将请求转发到 ADFS 并验证。
- ADFS returns OAuth 令牌到 WebAPI
- 没有登录?
- 向用户显示登录掩码
- 将请求转发到 ADFS 并验证。
- ADFS returns OAuth 令牌到 WebAPI
- Web API return 用户的 OAuth 令牌
这是正确的还是我完全离开了?
反正我没能把这些碎片拼在一起。
我看到很多代码在 Web API 中创建 JWT 令牌(但不与 ADFS 通信)或通过 WS-Federation 与 ADFS 通信。
此外,ADFS 的 OAuth 2 实施似乎有点特殊,这增加了另一层复杂性。
所以我的问题是:
如何在针对 ADFS 进行身份验证时向用户提供 OAuth 令牌?
如果您需要任何其他信息,我很乐意提供
您将需要 ADFS 2016,它支持使用 Angular.JS 的单页应用程序。有关流程和示例代码,请参阅 https://technet.microsoft.com/en-us/windows-server-docs/identity/ad-fs/development/single-page-application-with-ad-fs。
您说得对,ADFS 2012R2 仅支持授权代码流,这仅适用于 public 客户端与 Web api 通信的本机应用程序。
谢谢
//山姆(推特:@MrADFS)
我有一个 angular 2 应用程序、一个带有 OWIN 管道 (.NET 4.6) 的 Web API 和一个 ADFS 3.0。每个使用 angular 2 应用程序的用户都需要通过 ADFS 进行身份验证和授权,如果他已经登录域,他应该自动登录到应用程序(单点登录)
类似的东西:
我阅读了大量有关如何实现该目标的链接和代码,但我未能将各个部分组合在一起。 据我了解,ADFS 3.0 仅支持 OAuth 2 授权代码流,它在 Web 本身上分别不受支持或建议使用 JS 应用程序。 我不太确定它是哪个,但事实是我不能't/shouldn使用它。
我知道因此我必须在我的网络 API 所在的网络服务器上实施某种身份验证服务器(可能是 IdentityServer 3 或其他东西 "homemade")。
这让我认为我应该使用 ADFS 作为外部登录,例如 google,或者 facebook,这将导致以下工作流程
- 用户请求令牌
- Web API 检查用户是否已经登录域
- 登录了吗?
- 将请求转发到 ADFS 并验证。
- ADFS returns OAuth 令牌到 WebAPI
- 没有登录?
- 向用户显示登录掩码
- 将请求转发到 ADFS 并验证。
- ADFS returns OAuth 令牌到 WebAPI
- Web API return 用户的 OAuth 令牌
这是正确的还是我完全离开了?
反正我没能把这些碎片拼在一起。 我看到很多代码在 Web API 中创建 JWT 令牌(但不与 ADFS 通信)或通过 WS-Federation 与 ADFS 通信。 此外,ADFS 的 OAuth 2 实施似乎有点特殊,这增加了另一层复杂性。
所以我的问题是:
如何在针对 ADFS 进行身份验证时向用户提供 OAuth 令牌?
如果您需要任何其他信息,我很乐意提供
您将需要 ADFS 2016,它支持使用 Angular.JS 的单页应用程序。有关流程和示例代码,请参阅 https://technet.microsoft.com/en-us/windows-server-docs/identity/ad-fs/development/single-page-application-with-ad-fs。
您说得对,ADFS 2012R2 仅支持授权代码流,这仅适用于 public 客户端与 Web api 通信的本机应用程序。
谢谢
//山姆(推特:@MrADFS)