Identity Server 4用户管理API
问题描述:
我设法使用单个页面应用程序项目(ReactJS
),在ASP.net Core
项目上运行的API和IdentityServer 4
项目获得解决方案。Identity Server 4用户管理API
我希望能够从单页应用程序项目调用IdentityServer 4
项目的API。
我使用authorize属性在IdentityServer 4
应用程序中创建了一个简单的控制器类。但是,如果我通过Postman
调用它,则会返回登录页面的HTML。
这种情况发生在我已经登录API并且使用相同的标记之后。
我该如何登录到身份服务器来拨打电话来管理用户?
答
正如评论中所述,您应该在您的问题中添加更多信息。你的控制器是身份服务器的mvc应用程序的一部分?你使用AspnetCore.Identity吗?
如果是这样,您的控制器受到AspnetCore.Identities的Cookie认证方案的保护。你需要发送cookie来访问控制器。这与身份服务器无关,因为您在本地MVC应用程序中,它只是普通的vanilla MVC。
邮差有问题发送cookie,你需要interceptor chrome extension。你也需要通过邮递员登录。
如果SPA由相同的MVC应用程序托管,这可能会起作用。如果没有,你需要配置你的MVC应用程序,以验证访问令牌(不只是发给他们),像这样:
// Adds IdentityServer
app.UseIdentityServer();
// Accept access tokens from identity server
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = "http://localhost:5000",
RequireHttpsMetadata = false,
AuthenticationScheme = "Bearer"
ApiName = "api1"
});
这样,您就可以请求访问令牌通过身份服务器的本地API,(你还需要为'api1'配置一个api作用域)。
为了验证他们在您的API控制器添加到您的控制器:
[Authorize(ActiveAuthenticationSchemes = "Bearer")]
[HttpGet]
public string Bearer()
{
return "Access Token Accepted";
}
您应该显示相关的代码。请参阅:https://stackoverflow.com/help/how-to-ask具体来说:https://stackoverflow.com/help/mcve – jdv