Identity Server内部API控制器的访问令牌

时间:2017-02-22 11:49:32

标签: asp.net-core-mvc identityserver4 thinktecture-ident-server

我创建了一个身份服务器4项目和一个mvc客户端项目。身份验证流程按预期工作。我在与身份服务器相同的项目中添加了一个API控制器,我想从mvc客户端点击这个api资源。实际上,我需要在身份服务器项目中同时使用身份服务器中间件和令牌验证。

1 个答案:

答案 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"
});