簡體   English   中英

Azure Web 應用程序 - 如何使用委托和應用程序權限

[英]Azure Web Application - how to use both delegated and Application permissions

背景信息。

我希望我的 ASP.NET web 應用程序使用 MS Identity 平台對用戶進行身份驗證......並允許他們查看自己的個人資料。 我的這部分代碼正在工作。 我還有一個 function 允許最終用戶從他們的本地計算機中選擇一個文件並通過 MS Graph 上傳 session 上傳到 SP。 這也是目前工作

我的 Azure 應用程序注冊的“API 權限”下的安全配置如下:

  • Sites.ReadWrite.All->委托
  • User.Read->Delegated

但現在我想讓應用程序本身進行文件上傳。 所以我將安全設置更改為如下所示:

  • Sites.ReadWrite.All->應用程序
  • User.Read->Delegated

當我嘗試上傳時,我收到拒絕訪問錯誤消息返回

我還為應用程序添加了“Files.ReadWrite.All”,但這也不起作用。 有人可以指出我正確的方向嗎? 我是否必須為要上傳的應用程序創建一個單獨的 graphClient?

編輯 1

我想知道這是否相關:

https://docs.microsoft.com/en-us/answers/questions/354161/sitesselected-accessdenied-when-uploading-files.html

有誰知道他說的OP是什么意思

我們的應用程序已注冊為具有權限角色“WRITE”的目標網站集的訪問權限

或者也許更好的問題是你是如何做到這一點的?

將應用程序類型 api 權限分配給您的 azure 廣告應用程序后,您需要使用ClientCredentialFlow生成訪問令牌並使用它來調用 api。

然后您可以使用訪問令牌直接發送 http 請求。 這是一個部門的一部分,所以它應該在你的場景中工作。

using Azure.Identity;
using Microsoft.Identity.Client;    

IConfidentialClientApplication app;
app = ConfidentialClientApplicationBuilder.Create("azure_ad_app_client_id")
                        .WithClientSecret("client_secret")
                        .WithAuthority(new Uri("https://login.microsoftonline.com/your_tanent_name.onmicrosoft.com"))
                        .Build();
AuthenticationResult result = null;
string[] scopes = new string[] { "https://graph.microsoft.com/.default" };
result = await app.AcquireTokenForClient(scopes)
                        .ExecuteAsync();
string accesstoken = result.AccessToken;

暫無
暫無

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

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