.Net Core 2.0 - OpenID Connect - недействительный документ обнаружения

Я использую определенного поставщика OIDC для обеспечения безопасности в проекте .Net Core 2.0 MVC, однако у меня возникли проблемы с документом Discovery.

Мне предоставили 3 URL-адреса от провайдера (где домен фиктивный):

https://www.oidcprovider.com/connectapi/authorize

https://www.oidcprovider.com/connectapi/token

https://www.oidcprovider.com/connectapi/userinfo

в моей конфигурации я ввел следующие значения:

 .AddOpenIdConnect(options => {
                    options.Authority = "https://www.oidcprovider.com/connectapi/authorize/";
                    options.ClientId = "xxx";
                    options.ClientSecret = "xxx";
                    options.ResponseType = OpenIdConnectResponseType.Code;
                    options.CallbackPath = new PathString("/api/security/callback");

Я получаю следующую ошибку при попытке запустить приложение:

При обработке запроса возникло необработанное исключение. HttpRequestException: код состояния ответа не указывает на успех: 400 (неверный запрос). System.Net.Http.HttpResponseMessage.EnsureSuccessStatusCode ()

IOException: IDX10804: невозможно получить документ из: 'https://www.oidcprovider.com/connectapi/authorize/.well-known/openid-configuration ». Microsoft.IdentityModel.Protocols.HttpDocumentRetriever + d__8.MoveNext ()

InvalidOperationException: IDX10803: невозможно получить конфигурацию из: 'https://www.oidcprovider.com/connectapi/authorize/.well-known/openid-configuration ». Microsoft.IdentityModel.Protocols.ConfigurationManager + d__24.MoveNext ()

Требуется ли для этого OIDC Discovery Document?

Я попытался вызвать URL-адрес документа обнаружения непосредственно в моем браузере, вызвав этот URL-адрес: https://www.oidcprovider.com/connectapi/authorize/.well-known/openid-configuration

Однако я получаю эту информацию в формате JSON обратно:

{"error": "invalid_client", "error_description": "Не указан идентификатор клиента"}

Как мне заставить это работать?

Мои 2 вопроса:

1. Является ли документ об обнаружении необязательным или обязательным?

2. Могу ли я указать конечные точки вручную в .NET Core 2.0, если дискотека недоступна?


person Pinpoint Solutions    schedule 13.03.2018    source источник
comment
Вы пробовали указать разные URL в options.Authority? Скорее всего, oidcprovider.com/connectapi/authorize ошибочен. Попробуйте использовать oidcprovider.com/connectapi или oidcprovider.com   -  person Tomas    schedule 13.03.2018
comment
Согласно спецификации (openid.net/specs/) это должно быть в корне имени хоста: GET /.well-known/openid-configuration HTTP / 1.1 Host: example.com   -  person jwilleke    schedule 13.03.2018
comment
Томас - похоже, документ об обнаружении недоступен по указанному вами URL-адресу, только по URL-адресу / authorize. Но вернул мне ошибку JSON.   -  person Pinpoint Solutions    schedule 13.03.2018
comment
jwilleke - Итак, вы говорите, что этот провайдер не реализовал должным образом протокол OpenID Connect?   -  person Pinpoint Solutions    schedule 13.03.2018


Ответы (1)


Кажется, я нашел свои ответы.

  1. Документ обнаружения является необязательным.

  2. Да - вы можете, указав параметры конфигурации в параметрах .AddOpenIdConnect

    options.Configuration = new OpenIdConnectConfiguration () {AuthorizationEndpoint = "https://www.oidcprovider.com/connectapi/authorize ", TokenEndpoint =" https://www.oidcprovider.com/connectapi/token ", UserInfoEndpoint =" https://www.oidcprovider.com/connectapi/userinfo "};

person Pinpoint Solutions    schedule 14.03.2018