2017-04-13 56 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