在使用IdentityServer4和OIDC-客戶端的SPA環境中,使用多個外部提供商進行以下操作的最安全方法是什麼?使用OIDC客戶端和IdentityServer4交換具有內部身份提供商令牌的外部身份提供商令牌
實質上,如果用戶使用Google登錄,我需要登錄到我的內部系統並創建新的聲明。這必須完成服務器端的第三方回調。在SPA中,IdentityServer4中最安全的配置是什麼?
流量:
- 用戶登錄到谷歌在SPA(調用oidcManager.signinRedirect)
- 谷歌重定向到SPA(CAL新Oidc.UserManager()signinRedirectCallback)
- 發送JWT回IdentityServer4(但使用哪種機制?)。 如果用戶確實存在於內部系統中,則返回一個新的JWT,其中包含OIDCManager可以管理的自定義聲明(替換外部聲明)。 如果內部系統中不存在用戶,則重定向到資源所有者憑據流接管的登錄頁面。
對於#3,我喜歡使用IdentityServer4已經提供的,而不是滾動我自己的端點。這種情況很容易支持嗎?
從本質上講,我需要完成這一點,但不知道IdentityServer4將如何處理這種情況:
new Oidc.UserManager().signinRedirectCallback().then(function (externalUser) {
//TODO: pass externalUser to IdentityServer4 endpoint where it's exchanged for internal user
window.location = "../Spa/Index";
}).catch(function (e) {
console.error(e);
});
除了登錄流程,什麼是做與多個外部提供商令牌刷新最安全的方法。我假設我需要定期刷新外部令牌,以防我自己的內部令牌過期。