筆記下 AAD 與 OpenID Connect (OIDC) 的登出相關操作
結論
到 https://your.domain/.well-known/openid-configuration
找 end_session_endpoint 的網址
就可以登出了
OIDC (OpenID Connect)
OpenID Connect (OIDC) 是建置於 OAuth 2.0 的驗證通訊協定,可用來安全地將使用者登入應用程式。
當您使用 Microsoft 身分識別平臺的 OpenID Connect 執行時,可以將登入及 API 存取新增至您的應用程式。
註釋
如果你或第三方驗證使用OAuth流程並使用OIDC協定,那就跟Oauth依樣會有一些統一個規範,方便導入到支援 OIDC的 Application 中。
比如你開發的系統符合 OIDC,那你網站就會有一份 .well-known/openid-configuration ,沒意外可能在根目錄
Example: https://app.azurewebsites.net/.well-known/openid-configuration
再來依照 OIDC 的規範,該文件內描述了登入/登出相關的一些資訊,端點位置…ECT.
其中 end_session_endpoint 這個端點就是用來登出應用程式的
流程
假設我有一個前端網站 (A) 和一個 Identity Server 4 登入驗證網站 (B),登入使用 AAD (C)
那前端 (A) 要登出時需要依照我們登入驗證網站 (B) 的描述檔 .well-known/openid-configuration
取得 end_session_endpoint 內指定網址並進行呼叫來開始登出
此時 (B) 需要再使用 AAD (C) 的 .well-known/openid-configuration => end_session_endpoint 來進行登出
例如
https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration
裡面可以找到 "end_session_endpoint": "https://login.microsoftonline.com/common/oauth2/v2.0/logout"
所以登出網址就是 https://login.microsoftonline.com/common/oauth2/v2.0/logout
範例
GET https://login.microsoftonline.com/common/oauth2/v2.0/logout?post_logout_redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
其中 post_logout_redirect_uri
是登出後跳轉的地址,必須包含在你設定的 Oauth 回傳網址清單中
參照
Microsoft 身分識別平台和 OpenID Connect 通訊協定 - Microsoft identity platform | Microsoft Docs