2017-08-14 96 views
1

根據Azure AD documentation,Azure AD v2.0 ID令牌應包含訪問令牌哈希,at_hash聲明,當ID令牌爲與Access令牌一起發行。Azure AD v2.0中的OAuth:Azure AD v2.0中缺少at_hash聲明id_token

但是,似乎at_hash聲明從ID令牌中丟失。在調用Azure AD訪問令牌請求v2.0端點https://login.microsoftonline.com/{my_tenant}/oauth2/v2.0/token後,由Azure返回的id_token不包含at_hash索賠,儘管發佈了訪問令牌。響應身體的

實施例通過天青AD V2.0返回:

"token_type": "Bearer", 
    "scope": "User.Read", 
    "expires_in": 3599, 
    "ext_expires_in": 0, 
    "access_token": "eyJ0eXAiO ...", 
    "refresh_token": "OAQABAAAAAAA9kTklh ..." 
    "id_token": "eyJ0eXAiOiJKV1QiLC ..." 

的id_token包含在以下權利要求。它不包含at_hash索賠。

"aud": "... GUID ... ", 
    "iss": "https://login.microsoftonline.com/.../v2.0", 
    "iat": 1502324474, 
    "nbf": 1502324474, 
    "exp": 1502328374, 
    "aio": "ATQA ... 7liW+Hb", 
    "name": "... some name ... ", 
    "nonce": "... GUID ...", 
    "oid": "... GUID ...", 
    "preferred_username": "... some preferred name ...", 
    "sub": "KIuLx ... ifCaZUUi3b", 
    "tid": "... GUID ...", 
    "ver": "2.0" 

回答

0

根據上面的請求,您使用的是授權碼流。看來這個聲明不是由這個流程發佈的。

POST: https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize? 
response_type=token+id_token 
&client_id={client_id} 
&redirect_uri={redirect_uri} 
&scope=openid+mail.read 
&state=123 
&nonce=456 
+0

根據[文檔約「ID令牌權利要求」](https://docs.microsoft.com/en-us/azure:然而,使用類似下面請求隱式請求流時這個要求就發出/ active-directory/develop/active-directory-v2-tokens#令牌類型):只有使用OAuth 2.0訪問令牌發佈ID令牌時,訪問令牌散列纔會包含在ID令牌中。 由於'at_hash'聲明的目的是接收者可以使用它來驗證它接收到的訪問令牌,所以當使用授權返回訪問令牌時,爲什麼'at_hash'沒有被包含在聲明中?代碼流? –

+0

這只是基於測試而不能找到有關它的官方文檔。 –