Не удается получить доступ к API при использовании IdentityServer 4 на MAC - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть 2 приложения ASP.NET Core 2.1 (аутентификация и API), использующих Identity Server 4.

При запуске приложения API у меня есть следующее:

services
  .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
  .AddIdentityServerAuthentication(x => 
    x.ApiName = "api";
    x.Authority = "https://localhost:5005";
    x.RequireHttpsMetadata = false;
  });   

При запуске приложения Auth у меня следующая конфигурация:

services
  .AddIdentityServer()
  .AddDeveloperSigningCredential()
  .AddInMemoryIdentityResources(Config.GetIdentityResources())
  .AddInMemoryApiResources(Config.GetApiResources())    
  .AddInMemoryClients(Config.GetClients())
  .AddTestUsers(Config.GetTestUsers());

Где класс Config следующий:

public class Config {

  public static List<ApiResource> GetApiResources() {
    return new List<ApiResource> { 
      new ApiResource("api", "API Resource")
    };
  }

  public static List<IdentityResource> GetIdentityResources() {
    return new List<IdentityResource> { 
      new IdentityResources.OpenId(),
      new IdentityResources.Profile()        
    };
  }    

  public static List<Client> GetClients() {
    return new List<Client> { 
      new Client {      
        ClientId = "app",
        ClientName = "APP Client",        
        ClientSecrets = { new Secret("pass".Sha256()) },
        AllowedGrantTypes = GrantTypes.ClientCredentials,         
        AllowedScopes = { 
          "api"
        }
      }
   }

  public static List<TestUser> GetTestUsers() {
    return new List<TestUser> { 
      new TestUser { 
        SubjectId = "1", 
        Username = "john", 
        Password = "john", 
        Claims = new List<Claim> { new Claim("name", "John") } },
    };
  }

}

С почтальоном я могу получить доступ к .well-known/openid-configuration и создать токен доступа.

Однако, когда я вызываю API, я получаю следующую ошибку:

Microsoft.AspNetCore.Authentication.JwtBearer.JwtBearerHandler[3]
Exception occurred while processing message.
System.InvalidOperationException: IDX20803: Unable to obtain configuration from: '[PII is hidden by default. 
Set the 'ShowPII' flag in IdentityModelEventSource.cs to true to reveal it.]'. ---> System.IO.IOException: IDX20804: Unable to retrieve document from: '[PII is hidden by default. 
Set the 'ShowPII' flag in IdentityModelEventSource.cs to true to reveal it.]'. ---> System.Net.Http.HttpRequestException: 
The SSL connection could not be established, see inner exception. ---> System.Security.Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.

Я запустил dotnet dev-certs https --trust;, и сертификат локального хоста появляется в Mac Keychain.

Важно
На компьютере под управлением Windows код, который я разместил, работает нормально.
Я могу получить доступ к .well-known/openid-configuration и конечной точке API.

Чего мне не хватает?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...