我想授權用戶通過Microsft Graph針對AD組。只有AD組的成員才能訪問該API。哪些Microsoft Graph查詢(API URL)需要執行此授權?或者還有其他選擇嗎?如何授權Microsoft Graph中的AD組中的用戶
如果您對此建議最佳實踐,敬請欣賞。
在此先感謝您的建議和幫助。
最好的問候, 德布
我想授權用戶通過Microsft Graph針對AD組。只有AD組的成員才能訪問該API。哪些Microsoft Graph查詢(API URL)需要執行此授權?或者還有其他選擇嗎?如何授權Microsoft Graph中的AD組中的用戶
如果您對此建議最佳實踐,敬請欣賞。
在此先感謝您的建議和幫助。
最好的問候, 德布
如果API使用ASP.NET你可以使用內置的ID連接功能,並在要保護這些API控制器或方法使用常規的[Authorize]
屬性。
該示例使用常規的OpenID Connect身份驗證,並使用JWT令牌聲明來檢索用戶的組成員資格。如果這些組不能包含在JWT令牌中,則該令牌將包含一個指向您可以檢索它們的鏈接。這在樣本的ClaimHelper.cs文件中處理。
要獲取JWT令牌中的組聲明,請記住在樣本的設置過程中遵循step 3,因爲它們在默認情況下不存在。
您甚至可以將來自AAD的組對象ID放入ASP.NET「角色」中,因此您可以使用[Authorize]
屬性,如[Authorize(Roles="217ea9e4-0350-4a2d-b805-d71317fa0245")]
,其中GUID是需要成員資格的組的objectID。
要實現最後一部分,您需要先將組聲明添加到清單(上述步驟3),然後將TokenValidationParameters
添加到OpenIdConnectAuthenticationOptions
,您可以在其中定義哪個聲明類型將定義角色(在Startup.Auth的.cs):
new OpenIdConnectAuthenticationOptions
{
// add this:
TokenValidationParameters = new TokenValidationParameters()
{
RoleClaimType = "groups"
},
// end added code
ClientId = ConfigHelper.ClientId,
後者可能不是最好的做法,因爲你需要組的ObjectID在[Authorize]
屬性。
謝謝。現在我被困在我提到RoleCliamType =「group」的地方,沒有在StartUp.Auth.cs中找到代碼。 –
示例StartUp.Auth.cs沒有RoleClaimType –
我在代碼片段中將''TokenValidationParameters''屬性添加到''OpenIdConnectAuthenticationOptions'',所以它更清楚。 – RasmusW