1

我已經建立了一個已啓動並正在運行的基本IdentityServer。我正在使用Identity Manager和Identity Admin將所有內容(用戶,角色,聲明,客戶端,範圍)保存在數據庫中。下一步是將認證與AD集成。我的要求是:IdentityServer - 用於身份驗證的AD和其餘數據庫

  • 用戶將會對廣告進行身份驗證
  • 用戶權限(索賠/角色)將被存儲在數據庫中(像現在這樣)
  • 根據不同的客戶端應用程序,我有三個不同場景:
    • 在某些情況下,應該使用當前用戶的身份(我猜這是可行的,Identity Server應該使用Windows身份驗證運行)。用戶不應該被提示任何事情。
    • 在某些情況下,用戶必須明確登錄。他可以使用當前的登錄名或
    • 手動輸入將根據AD進行驗證的用戶名和密碼。

我正在尋找一些指針/方向如何進行。我應該自己處理完整的登錄順序,是否有類似的東西可以根據我的解決方案等。

任何幫助表示讚賞。

+0

我不清楚你的意思是「他可以使用當前登錄」 – stombeur

+0

@stombeur任何用戶將通過AD登錄在Windows中登錄,我想使用該登錄。 – Albert

+0

好的,我清理了我的答案一點,以使其更清楚 – stombeur

回答

1

一些周圍挖掘後:

This example在idsrv顯示如何運行在單獨的Web應用程序,以及如何使用WS-送入委派到Web應用程序authn窗口。這也在this issue中解釋。

This blog post by scott brady展示瞭如何ADFS配置爲允許idsrv依賴方和如何委派與WS-美聯儲ADFS允許在ADFS

用戶名/密碼登錄如果使用這兩個WS-美聯儲代表團,使確保爲認證類型使用不同的值。

你可以做的是強制用戶首先嚐試winauth,方法是將acr_values和idp添加到第一次重定向並將idp設置爲winauth外部idp的名稱。請參閱the idsrv docs here

如果失敗,可以使用this technique來檢測從外部winauth提供程序登錄失敗並自動重定向到adfs提供程序。

如果由於某種原因您確實到達了登錄頁面,您可以disable local login(不顯示用戶名/密碼輸入字段),並且默認情況下外部提供者(winauth和adfs)會顯示爲按鈕。


編輯:

是的,你會增加旁邊idsrv額外的Web應用程序,這避免了與Windows集成身份驗證運行idsrv

與winauth用戶,流量爲

client app -> IdSrv (login page) -> WinAuthHost -> IdSrv (auth endpoint)-> client app 

實際上,如果成功,用戶很可能只會看到客戶端應用和WinauthHost中的一個屏幕,並且從來沒有看到Idsrv

如果用戶沒有登錄到Windows(或不正確的域)時,那麼流程會是這樣

client app -> IdSrv (login page) -> WinAuthHost -> IdSrv login (auth endpoint, fails) 
-> ADFS -> IdSrv login (auth endpoint) -> client app 
+0

我實際上使用了大多數除了winauth外部idp和自動重定向失敗,但這些示例似乎合法 – stombeur

+0

謝謝。這很有用,但我仍然不清楚整體流程。我的理解是,我將不得不創建另一個使用Windows身份驗證運行的Web應用程序,它將託管IdSrv WinAuth組件(我們稱之爲WinAuthHost)。對於最終用戶,流程將爲: 客戶端應用程序 - > IdSrv登錄 - > WinAuthHost - > ADFS - > WinAuthHost - > IdSrv - >客戶端應用程序。 是嗎? – Albert

+0

另外,我不確定你的意思是「如果失敗了,你可以使用這種技術來檢測從外部winauth提供者登錄失敗並自動重定向到adfs提供者。」?我希望用戶僅使用AD登錄...如果失敗,用戶不應登錄。你能澄清嗎? – Albert