Asp.net core 仅安全访问IdentityServer4中的控制器
我根据教程创建了一个基本的IdentityServer4。 它由APIserver、JSClient和ID4服务器组成 总的来说,一切都很好,现在我尝试更进一步,我想在ID4Server中创建一个名为AuthorizedUserController的基本控制器,它是restful的,并且只能由授权用户从JSClient访问Asp.net core 仅安全访问IdentityServer4中的控制器,asp.net-core,identityserver4,Asp.net Core,Identityserver4,我根据教程创建了一个基本的IdentityServer4。 它由APIserver、JSClient和ID4服务器组成 总的来说,一切都很好,现在我尝试更进一步,我想在ID4Server中创建一个名为AuthorizedUserController的基本控制器,它是restful的,并且只能由授权用户从JSClient访问 我目前找不到任何关于如何实现这一点的示例,希望能得到一些指导。您可以让IdentityServer包含承载令牌身份验证: services.AddAuthentication
我目前找不到任何关于如何实现这一点的示例,希望能得到一些指导。您可以让IdentityServer包含承载令牌身份验证:
services.AddAuthentication()
.AddIdentityServerAuthentication("bearer", options =>
{
options.Authority = "you identityserver base url";
options.ApiName = "identityserver_api";
});
然后使用授权策略检查方案和客户端ID声明:
services.AddAuthorization(options =>
{
options.AddPolicy("JsClient", config =>
{
config.AddAuthenticationSchemes("bearer");
config.RequireClaim("client_id", "my javascript client");
});
});
然后向控制器添加一个authorize属性,该属性指定此授权策略:
[Authorize("JsClient")]
我想要一个单独的API,在这里检查我的答案:你能澄清吗?我的api是独立于ID4服务器的。不要使Ids4成为restful的,而是分离功能。将Ids4留给身份验证。创建一个新的API并将基本控制器放在那里。Treat是另一个资源(在本例中,它可以访问IdentityModel)。有趣的是,我在发布问题的同时偶然发现了这一点。大约80%和我的一样。