我创建了一个身份服务器4项目和一个mvc客户端项目。身份验证流程按预期工作。我在与身份服务器相同的项目中添加了一个API控制器,我想从mvc客户端点击这个api资源。实际上,我需要在身份服务器项目中同时使用身份服务器中间件和令牌验证。
答案 0 :(得分:1)
如果您还没有,请将这些Nuget软件包添加到您已建立的IdentityServer应用程序/站点:
IdentityServer4.AccessTokenValidation
Microsoft.AspNetCore.Mvc
将另一个Api资源添加到资源列表中:
public static IEnumerable<ApiResource> GetApiResources()
{
return new List<ApiResource>
{
new ApiResource("api1", "My API"),
new ApiResource("api2", "IdentityServer API")
};
}
更新您的客户端配置以允许api2:
public static IEnumerable<Client> GetClients()
{
return new List<Client>
{
new Client
{
ClientId = "mvc",
... omitted
AllowedScopes = new List<string>
{
IdentityServerConstants.StandardScopes.OpenId,
IdentityServerConstants.StandardScopes.Profile,
"api2"
}
}
};
}
在IdentityServer的Startup中的Configure方法中添加:
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = "http://localhost:5000",
RequireHttpsMetadata = false,
ApiName = "api2"
});