c# – 使用带有Client Secret的Azure AD对asp.net核心后端进行身
我目前正在开发一个Kiosk终端,我需要使用Azure AD为使用asp.net核心构建的REST API授予UWP应用程序的访问权限.由于没有用户,因为它是一个自助服务终端设置,我创建了一个Azure AD应用程序注册(Web应用程序),并创建了一个用作客户端密钥的密钥.
我设法使用POST请求获取持有者访问令牌https://login.microsoftonline.com/{myTenant}/oauth2/token,提供ClientId,ClientSecret和所需资源(=我的应用注册的AppId). 在我的asp.net核心应用程序中,我确实启用了JWTBearerAuthentication,如下所示: app.UseJwtBearerAuthentication(new JwtBearerOptions { Authority = Configuration["ClientAuthentication:AADInstance"] + Configuration["ClientAuthentication:TenantId"],Audience = Configuration["ClientAuthentication:Audience"] }); 我在API控制器中使用Authorize属性. 在这个设置中我总是得到一个
在Authorization标头中使用Bearer令牌调用此API时. 有任何想法吗? 解决方法
代码示例仅用于检查代码问题,因为我无法重现此问题.
这是我的尝试: >从Azure经典门户注册应用程序 //7f39bae4-f852-41ae-8a7b-54d022cf65bd is the client_id of app POST:https://login.microsoftonline.com/{tenantId}/oauth2/token grant_type=client_credentials&client_id=7f39bae4-f852-41ae-8a7b-54d022cf65bd&client_secret={clientSecret}&resource=7f39bae4-f852-41ae-8a7b-54d022cf65bd >克隆here的代码示例 app.UseJwtBearerAuthentication(new JwtBearerOptions { Authority = String.Format(Configuration["AzureAd:AadInstance"],Configuration["AzureAD:Tenant"]),Audience = "7f39bae4-f852-41ae-8a7b-54d022cf65bd" }); >运行ToDoListService项目 GET:https://localhost:44321/api/TodoList Authorization: bearer {accessToken} 破发点对我来说很好.请确保观众是您应用的客户ID.如果您仍有问题,我建议您按照上述步骤检查是否有帮助. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |