authenticate Angular 2 against ADFS via Web API
我有一个angular 2应用程序,一个带有OWIN Pipeline(.NET 4.6)的Web API和一个ADFS 3.0。每个使用angular 2应用程序的用户都需要通过ADFS进行身份验证和授权,如果他已经登录了域,则应自动登录到应用程序(单点登录)
像这样:
我阅读了大量的链接和代码,以了解如何实现这一点,但我未能将各个部分放在一起。
据我了解,ADFS 3.0仅支持OAuth 2授权代码流,这本身不受Web应用程序的支持或不建议与JS应用程序一起使用。
我不太确定是哪个,但事实是我不能/不应该使用它。
我知道,因此我必须在Web API所在的Web服务器上实现某种身份验证服务器(可能是IdentityServer 3或"自制"的东西)。
这使我认为我应该将ADFS用作google或facebook之类的外部登录名,这将导致以下工作流程
这是正确的还是我完全无法接受?
无论如何,我都无法拼凑而成。
我看到了很多在Web API中创建JWT令牌的代码(但不与ADFS通信)或通过WS-Federation与ADFS通信。
此外,ADFS的OAuth 2实现似乎有些特殊,这又增加了另一层复杂性。
所以我的问题是:
通过ADFS进行身份验证时,如何向用户提供OAuth令牌?
如果您需要任何其他信息,我们很乐意提供
您将需要ADFS 2016,它支持使用Angular.JS的单页应用程序。 有关流程和示例代码,请参见https://technet.microsoft.com/zh-cn/windows-server-docs/identity/ad-fs/development/single-page-application-with-ad-fs。
没错,ADFS 2012R2仅支持授权代码流,这仅适用于作为公共客户端与Web api进行通信的本机应用程序。
谢谢
//萨姆(Twitter:@MrADFS)