2017-04-13 53 views
0

我有一个角度为2的应用程序,OWIN管道(.NET 4.6)和ADFS 3.0的Web API。谁使用角2应用程序的每个用户都需要进行身份验证,并通过ADFS授权,如果他在域中已经登录,他应该自动登录到应用程序(单点登录)通过Web API验证针对ADFS的Angular 2

类似的东西:

enter image description here

我读了很多关于如何实现这一点的链接和代码,但是我没有把这些部分放在一起。 据我了解,ADFS 3.0只支持OAuth 2 Authorization Code Flow,它本身不支持或分别通过JS应用程序建议。 我不太确定它是什么,但事实是我不能/不应该使用它。

我明白所以我必须在我的Web服务器(我的Web API可能是IdentityServer 3或“自制的”)上实现一些认证服务器。

这使我认为,我应该使用ADFS作为外部登录像谷歌或Facebook,这将导致以下工作流程

  1. 用户请求令牌
  2. 的Web API检查,如果用户已经登录进入域名
  3. 登录?
    1. 转发请求到ADFS并验证。
    2. ADFS将OAuth令牌返回给WebAPI
  4. 未登录?
    1. 向用户显示登录掩码
    2. 向ADFS转发请求并验证。
    3. ADFS返回OAuth令牌到的WebAPI
  5. 的Web API返回的OAuth令牌用户

这甚至正确的还是我完全地关闭?

无论如何,我不能把这些碎片放在一起。 我看到很多代码在Web API中创建JWT令牌(但不与ADFS通信)或通过WS-Federation与ADFS通信。另外ADFS的OAuth 2实现似乎有点特别,这增加了另一层复杂性。

所以我的问题是:

我怎样才能提供的OAuth令牌用户进行身份验证时对ADFS

如果您需要任何额外的信息,我乐意为它

回答

0

您需要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仅支持授权代码流,它仅适用于公共客户端与Web API交谈的本机应用程序。

感谢

//山姆(Twitter的:@MrADFS

+0

我认为它是 “莫名其妙” 的可能,如果我使用IdentityServer 3或相似,比 “桥梁” 一切或转换WS-联合会一个OAuth 2令牌(在我的Web API中)? – Arikael