.net 如何在使用客户端凭据流时获取Azure EA的OAuth令牌

mspsb9vt  于 2023-03-04  发布在  .NET
关注(0)|答案(1)|浏览(195)

我的目标是创建可通过OAuth令牌进行身份验证的Web服务。令牌必须由Azure企业应用程序通过OAuth客户端凭据流提供。
我正在使用MSAL库获取令牌。我确实设置了企业应用程序,下面的代码工作正常,并返回令牌:

appConfidential = ConfidentialClientApplicationBuilder
                    .Create(ClientID)
                    .WithClientSecret("MySecret")
                    .WithAuthority(authority)
                    .WithLegacyCacheCompatibility(false)
                    .Build();
                    
            string[] confidentialScope = new string[] { ".default" };
            return appConfidential.AcquireTokenForClient(confidentialScope).ExecuteAsync().Result;

这里的问题是我使用的**.default**作用域创建了只能用于Microsoft Graph的标记,我自己的webapi服务无法验证这样的标记。
我想我必须公开一个专用的API端点,它可以在这种情况下使用。我假设我必须为此创建一个应用程序角色,但我不知道我如何才能公开基于应用程序角色的API。
我找到了以下文档:https://learn.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps,但当我按照此文档操作时,尝试添加权限时,我的API下没有任何项目。x1c 0d1x
当想要使用客户端凭据流验证自己的Web服务时,是否有文档用于设置企业应用程序/应用程序注册?

wqnecbli

wqnecbli1#

我想我现在找到了一个解决方案。Azure配置和MSAL配置必须匹配,我很可能让它们每个都正确,但不是同时正确。
使用客户端密码时,必须将客户端应用程序配置为现有应用程序。

范围必须如下所示:

string[] confidentialScope = new string[] { "api://03aca70b-7433-4090-8815-90c99999999/.default" };

这将创建一个包含以下范围的令牌:

Im我的webapi服务,然后我可以配置相同的作用域,令牌被正确地验证,我的请求被认证。

相关问题