[英]How to get Azure AD access token for already logged in user?
我們在Microsoft Azure平台中運行一個應用程序服務(一個PHP網站)。 只有在用戶已經登錄后,才能訪問該網站。身份驗證基於Azure AD。 一切正常。
現在,從網站的PHP代碼中,我想獲取已登錄用戶的Azure AD組成員身份。
我閱讀了很多Web資源,解釋了如何從網站登錄用戶到Azure AD,從而獲得授權/訪問令牌,以執行其他操作,例如檢索組成員身份和許多其他內容。 但這不是我想要的。 用戶已經登錄並且可以成功使用該網站。 (否則,Microsoft會將用戶重定向到單點登錄頁面。)
使用PHP,例如,我可以從對網站的任何訪問的請求標頭中檢索登錄用戶的用戶名。 並且在請求標頭中還存儲了一些“訪問令牌”,以及其他內容,例如“客戶端主體ID”。 但是我不知道這是否是我可以用於其他操作的授權/訪問令牌。 也許/也許我做錯了什么。 例如,使用cURL請求https://graph.microsoft.com/v1.0/me/memberOf ,我收到一個InvalidAuthenticationToken錯誤,提示“ CompactToken解析失敗”。 我把“授權:承載{訪問令牌}”和“接受:應用/ JSON”到請求頭中將此作為解釋在這里 。 (我沒有關於令牌類型的明確信息,因此我只像示例中那樣假設“承載者”是正確的。也許這已經是錯誤的。)
我不知道如何進行解決。 也許我遺漏的一點根本不在我的cURL請求中,而是在AD和/或App Service的Azure設置中。 我希望您能提供幫助。
您走在正確的軌道上。
使用OAuth2或OIDC針對Azure AD成功進行身份驗證后,您將獲得訪問令牌 。 訪問令牌是基於64位編碼的JSON Web令牌(JWT),可用於訪問其他受保護的資源。
訪問令牌可能看起來像這樣:
EwAoA8l6BAAU ... 7PqHGsykYj7A0XqHCjbKKgWSkcAg==
您可以使用https://jwt.io進一步瀏覽其內容。
注意:以上令牌已縮短。 就其完整形式而言,它相當長。
在其他工作中,您需要訪問令牌來針對將來使用相同身份提供者(在本示例中為Azure AD)保護的任何API發出請求。
但是,在使用令牌訪問任何API之前,必須首先授予Azure AD應用程序必要的權限。 看到這個鏈接 。
注意:該鏈接適用於v1.0 Azure AD終結點。
排序所需的權限后,就可以開始執行請求。 您發出的請求看起來像,例如
GET https://graph.microsoft.com/v1.0/me
Authorization: Bearer eyJ0eXAiO ... 0X2tnSQLEANnSPHY0gKcgw
Host: graph.microsoft.com
在這里,令牌是在Authorization: Bearer
。
請參閱此鏈接以進一步閱讀。 該鏈接包含有關如何使用v2.0 Azure AD終結點的說明,但總體思路是相同的:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.