![](/img/trans.png)
[英]Can a MS Graph background/daemon app impersonate a user account without user interaction
[英]working example of OnBehalfOfProfider for a daemon app calling MS Graph
我很難找到適合這種情況的工作示例:
IConfidentialClientApplication confidentialClientApplication = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithRedirectUri(redirectUri)
.WithClientSecret(clientSecret)
.Build();
OnBehalfOfProvider authProvider = new OnBehalfOfProvider(confidentialClientApplication, scopes);
我面臨的問題: 1. 我從哪個包中獲得 OnBehalfOfProfider? 2. 假設我必須獲得 AAD 用戶的訪問令牌,而無需用戶實際登錄(它是一個守護程序應用程序) - 如何構建 UserAssertion 實例?
這里的信息基於兩個來源:MSDN 'on behlaf of provider' https://docs.microsoft.com/en-us/graph/sdks/choose-authentication-providers?tabs=CS#OnBehalfOfProvider和 github 的'how to呼叫 OBO' https://github.com/AzureAD/microsoft-authentication-library-for-dotnet/wiki/on-behalf-of
感謝藝術
當您的 API 接收包含用戶信息的訪問令牌,並且您希望以該用戶身份調用另一個 API 時,將使用代表流。 這聽起來不像你在這里的場景。
這聽起來更像是一種無人值守的后台訪問場景。 基本上有兩種選擇:
第一種方法更復雜,但推薦用於非關鍵流程。 MSAL 確實簡化了很多。 它的工作方式:
這種方法的缺點是它有點復雜,並且刷新令牌可能會過期,需要用戶重新進行身份驗證。
第二種方法更簡單,但需要使用應用程序權限而不是委派權限。 使用客戶端憑據,您的應用程序需要自己訪問所有數據,而無需任何用戶。 因此,這需要大量訪問並依賴於支持此方法的 API。 但它簡單可靠。
第三種方法是我不推薦的方法。 它要求您使用用戶的用戶名和密碼為用戶獲取令牌。 您不僅需要存儲用戶的密碼,而且如果用戶啟用了多重身份驗證、是訪客用戶等,則它根本不起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.