我有一个正在编写的aspnetcore应用程序,希望能够管理WVD资源。我遇到的问题是,当我尝试
时,从Msal获得的Bearer令牌给了我401GET https://rdweb.wvd.microsoft.com/api/feeddiscovery/webfeeddiscovery.aspx
我想也许我需要以天蓝色向我的应用程序添加API权限,但是我已经添加了:
https://management.azure.com/user_impersonation
而且我似乎找不到任何可能适用于WVD的东西。
也许我还是偏离了轨道。
我尝试查看来源:
https://github.com/Azure/RDS-Templates/tree/master/wvd-templates/wvd-management-ux/deploy
但是它已经被编译和缩小了,所以事实证明是困难的。
任何帮助获得有效令牌以调用WVD Rest API的人,将不胜感激。
获取令牌:
完整代码(减去Microsoft.Identity.Web内容)
var token = await TokenAcquisition.GetAccessTokenOnBehalfOfUserAsync(new[] { "https://mrs-Prod.ame.gbl/mrs-RDInfra-prod/user_impersonation" });
var httpClient = new HttpClient();
httpClient.BaseAddress = new Uri("https://rdweb.wvd.microsoft.com/");
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", $"{token}");
var result = await httpClient.GetAsync("api/hubdiscovery/eventhubdiscovery.aspx");
result = await httpClient.GetAsync("api/feeddiscovery/webfeeddiscovery.aspx");
答案 0 :(得分:0)
https://management.azure.com
用于Azure Service Management
API,在您的情况下,这是不正确的。
请在门户中导航至AD App-> API permissions
-> APIs my organization uses
->通过Windows Virtual Desktop
搜索,找到并单击。
如果您希望管理工具代表已登录该工具的用户进行Windows虚拟桌面管理调用,请选择Delegated permissions
-> user_impersonation
,完成屏幕快照之类的步骤。您还可以让用户自己同意许可,而无需单击Grant admin consent
按钮,这取决于您。
然后权限显示如下。
有关更多详细信息,请参见此Tutorial: Deploy a management tool和此step。
答案 1 :(得分:0)
天哪,我只是通过比较从msft rdweb应用程序获得的令牌来弄清楚的:
从RDWeb应用程序: “ aud”:“ https://mrs-prod.ame.gbl/mrs-RDInfra-prod”,
从我的应用程序: “ aud”:“ https://mrs-Prod.ame.gbl/mrs-RDInfra-prod”,
... 是的,我在-mrs-Prod中使用了大写的P。 msft应用在mrs-prod中使用小写的p。
我同时感到惊讶,愤怒和兴奋。
为记录起见,我直接在应用程序API权限屏幕中从Azure复制了我的值。