此请求的授权被拒绝-桌面到Webapi(asp.net)

问题描述 投票:0回答:1

我已经将头撞墙了一段时间。调用ASP.Net webapi的桌面WPF应用程序。我正在asp.net应用程序上使用[AUTHORIZE]批注。这是问题开始的地方。使用WPF应用程序中的MSAL。

static App()
    {
        _clientApp = PublicClientApplicationBuilder.Create(ClientId)
            .WithAuthority(AzureCloudInstance.AzurePublic, Tenant)
           .WithDefaultRedirectUri()
            .Build();            
    }

ClientId指的是Azure中桌面应用程序的应用程序注册。

 string[] scopes = new string[] { "api://****-f56f-4cec-a771-dbdb5d43f047/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();

                }  

Web api的应用程序注册也在那里。我已经通过“公开API”设置了范围,并授予了桌面应用程序调用网络api的委托权限。

当我打电话时得到

StatusCode: 401, ReasonPhrase: 'Unauthorized', Version: 1.1, Content: System.Net.Http.StreamContent, Headers

我可以调用非AUTHORIZE终结点,没问题,因此api工作正常。我无休止地浏览了MSAL文档。

我不确定。清单中的AppRoles。除了添加到清单之外,是否还需要对它们进行授权?我是否将App Service(Web api)保留为“在App Service应用程序上启用了匿名访问”。不会提示用户登录。” MSAL正在处理此事吗?我假设您可以使用MSAL代码或通过AD(身份验证/授权)保护api]

我已经把自己挖了一个洞,现在可以看出来,所以请给我一点儿麻烦。谢谢

c# wpf azure asp.net-web-api msal
1个回答
0
投票

请看一下:https://docs.microsoft.com/en-us/azure/app-service/configure-authentication-provider-aad#-configure-with-advanced-settings

在该文档的顶部有一条注释说:

Note
The express settings flow sets up an AAD V1 application registration. If you wish to use Azure Active Directory v2.0 (including MSAL), please follow the advanced configuration instructions.

基本上意味着您不能在Express设置中真正使用msal。但是可以配合进阶。

然后下面的部分描述了向桌面应用程序添加api权限方面需要对桌面应用程序执行的操作。

希望这会使您走上正确的轨道,如果没有,请进一步评论,我会尽力提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.