我對 openID 的用例有點困惑。
例如,如果用戶使用 openID 登錄到 Web 應用程式。這個 Web 應用程式是否應該為用戶創建一個帳戶?
1)。如果應該,那么使用 openID 和使用 OAuth(將范圍設定為“組態檔”)獲取用戶資訊然后為用戶創建帳戶有什么區別。(稍后登錄可以使用 profile/id 令牌中的唯一密鑰在資料庫中查找用戶)
2)。如果不應該,那么如果用戶注銷,然后再次使用 openID 登錄,則用戶之前所做的所有活動(例如,保存一些文章供以后閱讀)都消失了(假設沒有設定 cookie/會話,因為它們僅限于一臺設備)。如果是這樣,在這種情況下身份驗證的重點是什么
我知道 openID 是 OAuth 的擴展,專門用于身份驗證,但是我應該何時以及如何使用 openID 進行身份驗證?
謝謝
uj5u.com熱心網友回復:
OpenID 確實是一個 OAuth 擴展,但它可能會令人困惑,
OAuth2.0:授權
OpenID 連接:身份驗證
如果您在您這邊完成所有身份驗證,請使用 OpenID Connect,如果您只需要授權您可以使用 OAuth2.0(如果您已經有像 SAML 2.0 這樣的身份驗證方式)。
OpenID Connect 添加認證標準的 JWT 令牌(ID 令牌)。請記住,它們都是標準,因此您應該通過閱讀相應的檔案來遵循它。
您可以單獨使用 OAuth2.0 進行身份驗證,但它不應該是那樣的,您可能會超出標準。
類似問題請參見:OpenID 和 OAuth 有什么區別?
uj5u.com熱心網友回復:
EmCode 指出 OAuth 用于授權,OpenID Connect 用于身份驗證。這意味著使用 OAuth 流程,最終您會獲得一個訪問令牌,讓您可以訪問用戶的資源(或以該用戶的身份執行操作)。使用 OIDC 流程時,您會獲得一個 ID 令牌,它告訴您用戶是誰。當然,您可以將兩者混合使用,并通過 OIDC 流獲得 ID 令牌和訪問令牌。
例如:
您有一個應用程式,它使用 Google 作為 OIDC 登錄流程的 IdP。當用戶單擊登錄按鈕時,他們會在 Google 上確認身份,您的應用會取回 ID 令牌。此令牌不會讓你的應用程式可以訪問任何由谷歌(郵件,日歷,照片等)來控制用戶的資源。它只是根據您對范圍的請求,為您提供用戶是誰的資訊 - 可能是他們的姓名、電子郵件地址、年齡等。
如果您使用 OAuth 流程,并要求用戶允許您的應用訪問他們的日歷,那么您將獲得來自 Google 的訪問令牌。使用此令牌,您可以呼叫 Google 日歷 API 來獲取用戶的事件等。
一旦您從 IdP 獲得 ID 令牌,您通常要做的是在您的應用程式中創建一個帳戶并將其與您從 IdP 獲得的身份相關聯。這允許您保存有關您的用戶的任何相關狀態/業務資料。OIDC 為您提供的是,用戶在登錄您的網站時無需輸入任何密碼——他們可以使用 Google 登錄,您的應用程式仍然會知道用戶是誰。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/381732.html
上一篇:Azure聊天機器人-我可以從頁面使用現有的SSO身份驗證嗎?
下一篇:Xamarin-自動登錄
