簡體   English   中英

通過Microsoft Graph訪問不包含SCP(角色)聲明的令牌

[英]Access token not containing SCP (roles) claims via Microsoft Graph

我正在使用Microsoft Graph SDK為我的應用程序(不是用戶)獲取訪問令牌,以便從共享點進行讀取。 我一直在關注該文檔 ,並發布了此問題 鏈接的SO中的代碼是相同的。 我能夠在Azure門戶中添加應用程序權限以及授予它們(通過按按鈕)。 問題是,返回使用的令牌中不包含任何角色/ scp聲明。 因此,當使用令牌時,我收到令牌中需要包含scp或角色聲明”消息。

可以肯定的是,獲取訪問令牌時傳遞給我的范圍的唯一值是: https://graph.microsoft.com/.default : https://graph.microsoft.com/.default 我沒有傳遞Sites.ReadWrite.All之類的任何東西(如果我仍然添加該作用域,則會出現異常)。 我不確定如何繼續進行故障排除,我們將不勝感激。

編輯:使用如下所示的圖形SDK添加代碼:

var client = new ConfidentialClientApplication(id, uri, cred, null, new SessionTokenCache());
var authResult = await client.AcquireTokenForClientAsync(new[] {"https://graph.microsoft.com/.default"});
var token = authResult.AccessToken;
var graphServiceClient = new GraphServiceClient(new DelegateAuthenticationProvider(async request => {request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token)}));
var drives = await graphServiceClient.Sites[<sharepoint_host>].SiteWithPath(<known_path>).Drives.Request().GetAsync(); 

問題是,返回使用的令牌中不包含任何角色/ scp聲明。

如果在解碼的訪問令牌中找不到任何角色/ scp聲明。 您需要再次檢查Azure門戶中的權限。

解碼后的訪問令牌應包含您授予的角色。

在此處輸入圖片說明

登錄Azure門戶->單擊“ Azure Active Directory”->單擊“應用程序注冊(預覽)->查找應用程序”。

在此處輸入圖片說明

單擊您的應用程序-> API權限->檢查您是否對應用程序具有管理員權限。 如果不是,請單擊“授予管理員同意”。

在此處輸入圖片說明

獲取訪問令牌的代碼。 您可以在此處找到更多詳細信息。

    //authority=https://login.microsoftonline.com/{tenant}/
    ClientCredential clientCredentials;
    clientCredentials = new ClientCredential("{clientSecret}");
    var app = new ConfidentialClientApplication("{clientId}", "{authority}", "{redirecturl}",
                                    clientCredentials, null, new TokenCache());
    string[] scopes = new string[] { "https://graph.microsoft.com/.default" };
    AuthenticationResult result = null;
    result =  app.AcquireTokenForClientAsync(scopes).Result;
    Console.WriteLine(result.AccessToken);

解決方案似乎以不同的方式進行應用程序初始化:

var app = new ConfidentialClientApplication(ClientId, Authority, RedirectUri, credentials, null, new TokenCache());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM