簡體   English   中英

Spring Boot Auth服務器中的多個SSO提供程序

[英]Multiple SSO providers in Spring Boot Auth server

我按照Spring的本教程閱讀並實現了自己的Auth服務器。 有多個SSO提供商 - Facebook,Github和自定義身份驗證服務器。 在本教程中,auth服務器包含其他SSO提供程序的處理。

我有一個單獨的資源服務器,使用以下屬性鏈接到我的auth服務器:

security.oauth2.resource.userInfoUri=http://localhost:9000/user

我可以使用cUrl命令從我的auth服務器獲取令牌:

curl acme:acmesecret@localhost:9000/oauth/token -d grant_type=password -d username=user -d password=...
{"access_token":"aa49e025-c4fe-4892-86af-15af2e6b72a2","token_type":"bearer","refresh_token":"97a9f978-7aad-4af7-9329-78ff2ce9962d","expires_in":43199,"scope":"read write"}

但我無法理解的是,我如何使用其他SSO提供商從auth服務器獲取此類令牌? 資源服務器不應該關心如何獲取令牌以及我是否使用Facebook或我的自定義身份驗證服務器進行身份驗證。 它應該簡單地詢問auth服務器什么是Principal(已登錄的用戶),然后決定向他顯示哪些資源,對吧?

我沒有任何UI,這將支持移動應用程序,所以我需要udnerstand如何使用REST reqeusts處理身份驗證。

如果我理解你的問題,

如何使用其他SSO提供程序從auth服務器獲取此類令牌?

這個自定義Auth服務器正在抽象出你與FB或Github的交互並向你發出它自己的令牌。 您的自定義Auth服務器吐出的令牌不是FB或Github令牌,它是您的自定義Auth服務器生成的令牌(使用FB / Github令牌進行身份驗證后)。

那為什么我們需要FB / github?

你的自定義Auth服務器如何識別一個人,它肯定可以使用用戶ID和密碼; 考慮'使用FB登錄'作為它給用戶的另一個不錯的選擇。

除了FB和github之外,如何添加像digitalocean這樣的其他SSO提供程序?

就像我們為FB和Github做的一樣(用數字海洋注冊客戶端ID,然后在auth服務器應用程序中注冊,在屬性/ yaml文件中添加客戶端ID和秘密等)

資源服務器不應該關心如何獲取令牌以及我是否使用Facebook或我的自定義身份驗證服務器進行身份驗證。 它應該簡單地詢問auth服務器什么是Principal(已登錄的用戶),然后決定向他顯示哪些資源,對吧?

是的,你的理解是正確的。

編輯(回答評論中提出的問題)

但是讓我說我​​通過我的Auth服務器登錄Facebook。 我在哪里可以找到可以與資源服務器一起使用的令牌? 假設我有一個RestClient,並且想要通過我的auth服務器獲取屬於用戶的某些資源的請求,該用戶經過了Facebook身份驗證過程。 我在哪里可以找到要使用的令牌?

如果這是一個要求,我想你可以使用這個例子 ; 您可能不需要這樣的自定義身份驗證服務器。 擁有自定義auth服務器的重點是抽象出與FB或github的交互。

要么

如果您仍想使用自定義auth服務器方向,則從Auth服務器公開端點(這將從FB獲取您需要的資源),然后從資源服務器中使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM