在JWT令牌中升级到MSAL缺少AUD

时间:2020-05-21 08:48:10

标签: c# wpf asp.net-web-api azure-web-app-service msal

我正在设置迁移到MSAL,但JWT令牌缺少aud: 这是WPF桌面应用程序,可调用Web api(ASP.Net)

    .WithAuthority(AzureCloudInstance.AzurePublic, Tenant)
            .WithDefaultRedirectUri()                
            .Build();

我已将范围设置为,以匹配在webapi(应用程序注册)中设置的范围

string[] scopes = new string[] { "https://*******.azurewebsites.net/access_as_user" };

然后打电话

var accounts = await App.PublicClientApp.GetAccountsAsync();
                AuthenticationResult authResult;
                try
                {
                    authResult = await App.PublicClientApp
                        .AcquireTokenSilent(scopes, accounts.FirstOrDefault())
                        .ExecuteAsync();
                }
                catch (Exception)
                {
                    authResult = await App.PublicClientApp
                        .AcquireTokenInteractive(scopes)                           
                        .ExecuteAsync();
                }

返回的JWT令牌始终缺少aud:

Missing aud

然后我调用一个简单的测试来查看代码是否可以工作。

var httpClient = new System.Net.Http.HttpClient();
                System.Net.Http.HttpResponseMessage response;
                var request = new System.Net.Http.HttpRequestMessage(System.Net.Http.HttpMethod.Get, "https://****.azurewebsites.net/api/Combo/getComboList");                    
                //Add the token in Authorization header
                request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", authResult.AccessToken);
                response = await httpClient.SendAsync(request);
                var content = await response.Content.ReadAsStringAsync();

我总是出错。 您无权查看此目录或页面。 任何指针将不胜感激。 谢谢

编辑: 这是委派权限的屏幕快照。在本机客户端应用程序上的“应用程序注册”下。 enter image description here

0 个答案:

没有答案