Azure WVD Rest API身份验证

时间:2019-12-31 22:47:03

标签: azure azure-active-directory wvd

我有一个正在编写的aspnetcore应用程序,希望能够管理WVD资源。我遇到的问题是,当我尝试

时,从Msal获得的Bearer令牌给了我401
GET 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");

此方法来自Microsoft.Identity.Web project.

2 个答案:

答案 0 :(得分:0)

https://management.azure.com用于Azure Service Management API,在您的情况下,这是不正确的。

请在门户中导航至AD App-> API permissions-> APIs my organization uses->通过Windows Virtual Desktop搜索,找到并单击。

enter image description here

如果您希望管理工具代表已登录该工具的用户进行Windows虚拟桌面管理调用,请选择Delegated permissions-> user_impersonation,完成屏幕快照之类的步骤。您还可以让用户自己同意许可,而无需单击Grant admin consent按钮,这取决于您。

enter image description here

然后权限显示如下。

enter image description here

有关更多详细信息,请参见此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复制了我的值。