Проверка токена доступа в Web API 2 Framework 4.x с помощью Identity Server 4 - PullRequest
0 голосов
/ 17 ноября 2018

Надеюсь, кто-то может указать мне правильное направление, мне нужно проверить токен доступа, выданный сервером идентификации 4 в моем API.

Авторизованный атрибут уже установлен в API.

Токен доступа правильно получен с сервера, но при передаче токена доступа в запрос я получил 401 несанкционированную ошибку, и ничего не обрабатывается, запрос отклоняется.Я использую пакет nuget IdentityServer3.AccessTokenValidation.

Я заметил, что для v4 AccessTokenValidation можно установить RequireHttpsMetadata = false, но я не вижу, как в v3.

Это лучший способ сделать этоили я должен смотреть в другом направлении?

public void ConfigureAuth(IAppBuilder app)
{

    app.UseCookieAuthentication(new CookieAuthenticationOptions
    {
        AuthenticationType = "Cookies",
    });

    JwtSecurityTokenHandler.InboundClaimTypeMap = new Dictionary<string, 
    string> 
    ();

    app.UseIdentityServerBearerTokenAuthentication
    (new IdentityServerBearerTokenAuthenticationOptions
    {
        Authority = "http://localhost:5000",
        RequiredScopes = new[] { "api2" },
    });
}

Спасибо

1 Ответ

0 голосов
/ 07 марта 2019

Вам нужно удалить UseCookieAuthentication и просто использовать UseIdentityServerBearerTokenAuthentication.

, используя раздел

using System.IdentityModel.Tokens.Jwt;
using IdentityServer3.AccessTokenValidation;
using Microsoft.Owin;
using Owin;
using System.Net;

Ниже со мной работает конфигурация с использованием .Net 4.7 и dentityServer3.Contrib.AccessTokenValidation пакет nuget

public void ConfigureAuth(IAppBuilder app)
{
    JwtSecurityTokenHandler.DefaultInboundClaimFilter.Clear();
    JwtSecurityTokenHandler.DefaultInboundClaimTypeMap.Clear();
    JwtSecurityTokenHandler.DefaultOutboundClaimTypeMap.Clear();

    app.UseIdentityServerBearerTokenAuthentication(new IdentityServerBearerTokenAuthenticationOptions
    {
        Authority = "http://localhost:5000",
        RequireHttps = false, // For development
        RequiredScopes = new List<string> { "openid", "profile", "address", "roles", "offline_access" },            
    });
}

Используемые пакеты nuget

Install-Package IdentityModel -Version 3.10.10
Install-Package IdentityServer3.Contrib.AccessTokenValidation -Version 4.0.36
Install-Package Microsoft.IdentityModel.Tokens -Version 5.3.0
Install-Package System.IdentityModel.Tokens.Jwt -Version 5.3.0
Install-Package Microsoft.IdentityModel.Protocols.OpenIdConnect -Version 5.3.0
Install-Package Microsoft.IdentityModel.Protocols -Version 5.3.0
Install-Package Microsoft.IdentityModel.Logging -Version 5.3.0
Install-Package Microsoft.IdentityModel.JsonWebTokens -Version 5.3.0
...