2017-08-18 42 views
1

我遇到我們的AAD一些奇怪的行爲。用戶成功登錄後,我們的API調用會遭到某些用戶的未經授權。結果發現JWT中的索賠不見了。一些用戶正在獲取「組」聲明(他所屬的所有groupIds的數組),一些用戶正在獲得「hasgroups」聲明(如果用戶具有組,則不會有Ids)。由於我們的API的應用程序正在檢查授權這個「團體」要求,用戶誰沒有這個「羣體」要求得到一個403AAD團體聲稱缺少JWT令牌一些用戶

然而,在應用註冊的清單我設置了「 groupMembershipClaims「從」null「改爲」All「或」SecurityGroup「,這應該兼而有之。同時將「oauth2AllowImplicitFlow」設置爲true,因爲我們正在使用使用OAuth2的Angular應用程序。除此之外,我比較了幾乎所有的用戶設置,除了一些額外的用戶組之外,用戶是相同的。受影響的用戶沒有太多的組,有些甚至在最多5個組左右。

難道我忽略的東西或者是什麼導致了要求這種差異?我該如何解決這個問題,所有用戶都得到「團體」聲明?

回答

0

得到這個反饋MSFT內部:

在隱流,OAuth的將從 INTIAL直接返回了智威湯遜/授權通過查詢字符串PARAM電話。 HTTP規範 限制查詢字符串/ URL的長度,因此,如果AAD檢測到 得到的URI將超過該長度,它們取代基 與hasGroups權利要求。

使用隱式授予流動時,不管 「groupMembershipClaims」清單中的設定這是由設計。這是爲了避免去 在瀏覽器的網址長度上限爲令牌返回爲一個 URI片段。所以,或多或少地在4個用戶組成員身份之後, 您會在令牌中獲得「hasgroups:true」。你可以做的是使該圖形API一個 單獨調用來查詢用戶的組成員 。

因此需要額外往返Graph API以獲取用戶組。希望這也能幫助其他人。