我的目标是创建可通过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服务时,是否有文档用于设置企业应用程序/应用程序注册?
1条答案
按热度按时间wqnecbli1#
我想我现在找到了一个解决方案。Azure配置和MSAL配置必须匹配,我很可能让它们每个都正确,但不是同时正确。
使用客户端密码时,必须将客户端应用程序配置为现有应用程序。
范围必须如下所示:
这将创建一个包含以下范围的令牌:
Im我的webapi服务,然后我可以配置相同的作用域,令牌被正确地验证,我的请求被认证。