. Net -Core IdentityServer - Тип не поддерживается - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь развернуть свой проект. net core 3.1 в debian, используя nginx в зависимости от времени выполнения. Разрабатывал на Windows, при отладке все работает нормально. Однако на производстве я застрял с 502 из-за этой ошибки;

System.InvalidOperationException: Type '' is not supported.
  at Microsoft.AspNetCore.ApiAuthorization.IdentityServer.ConfigureClients.GetClients()+MoveNext()
  at Microsoft.AspNetCore.ApiAuthorization.IdentityServer.ConfigureClients.Configure(ApiAuthorizationOptions options)
  at Microsoft.Extensions.Options.OptionsFactory`1.Create(String name)
  at Microsoft.Extensions.Options.OptionsManager`1.<>c__DisplayClass5_0.<Get>b__0()
  at System.Lazy`1.ViaFactory(LazyThreadSafetyMode mode)
  at System.Lazy`1.ExecutionAndPublication(LazyHelper executionAndPublication, Boolean useDefaultConstructor)
  at System.Lazy`1.CreateValue()
  at System.Lazy`1.get_Value()
  at Microsoft.Extensions.Options.OptionsCache`1.GetOrAdd(String name, Func`1 createOptions)
  at Microsoft.Extensions.Options.OptionsManager`1.Get(String name)
  at Microsoft.Extensions.Options.OptionsManager`1.get_Value()

Я попытался добавить учетные данные для подписи в identityServer следующим образом;

var bytes = File.ReadAllBytes("/etc/myapp/IdentityServerCertificate.pfx");
var cert = new X509Certificate2(bytes, "PWD");
identityServer.AddSigningCredential(cert);

Также я добавил ключ к IdentityServer в appsettings.json;

      "IdentityServer": {
        "Clients": {
            "MyClient": {
                "Profile": "IdentityServerSPA"
            },
            "Key": {
                "Type": "File",
                 "FilePath": "/etc/myapp/IdentityServerCertificate.pfx",
                "Password": "PWD"
                }
        },

Но это не сработало. Кажется, это проблема, связанная с методом GetClients (), а не с сертификатом. Я также пробовал настраивать клиентов с помощью кода. Есть еще идеи? Спасибо!

1 Ответ

1 голос
/ 14 июля 2020

Эта проблема вызвана тем, как вы настроили список клиентов в настройках приложения. json. Свойство профиля для клиента должно быть одним из элементов, перечисленных в https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-api-authorization?view=aspnetcore-3.1#application -profiles

Здесь возникает ошибка https://github.com/dotnet/aspnetcore/blob/master/src/Identity/ApiAuthorization.IdentityServer/src/Configuration/ConfigureClients.cs#L48

...