尝试为我的Web api设置Azure AD OAuth客户端凭据授予流程。我正在关注https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-oauth2-client-creds-grant-flow中的文档。我必须向第三方公开我的API。我已经在Azure AD中创建了APP(这是针对请求我的API的客户端的),生成了机密,并且能够从oauth2 / token终结点获得响应。我的问题如下:
Azure AD的意义-> App Registrations->“我的 API应用”->“管理”下的“公开API?”,它具有以下选项: “授权客户端应用程序”。我如何使用此功能 有条件地阻止和批准客户端应用程序吗?
答案 0 :(得分:1)
您在正确的轨道上。
此答案Azure AD OAuth client credentials grant flow with Web API AuthorizeAttribute Roles将引导您完成一种方法,使用令牌中的roles
声明来授权呼叫。
您将需要:
然后您可以使用AuthorizeAttribute来映射哪些角色可以执行哪些控制器/操作,如下所示:
[Authorize(Roles = "Reader,Requester,Editor,Approver,Administrator")]
答案 1 :(得分:0)
完成令牌获取流程后,您将收到JWT承载访问令牌。从令牌消费端(您的服务)开始,您需要执行JWT验证。这是通过验证JWT签名和声明来完成的。您验证的最重要的声明之一是受众声明( aud ),该声明必须是令牌接收服务唯一的标识符(例如:您的服务的URL,ID) 。您在哪里注册?这是您的第二个问题。
请通读MS令牌验证指南,该指南解释了要点-Microsoft identity platform access tokens
在这里注册有效的令牌应收端点(例如:-您的api应用)。如果您检查令牌请求,则提供的 resource 参数必须与注册的标识符匹配。这样,Azure可以验证令牌请求,并为所提到的资源颁发访问令牌。您可以在令牌中将其作为 aud 声明。希望您现在已建立连接。
否,仅令牌获取方需要客户端凭据。您的API或任何令牌使用方都不需要密码。它们仅需要有效的访问令牌和令牌签名证书详细信息。证书详细信息在 openem-configuration 端点的 jwks_uri 中公开。