.Net Core 2.0 - OpenID Connect - невалиден документ за откриване

Използвам конкретен доставчик на OIDC за моята сигурност в .Net Core 2.0 MVC Project, но имам проблеми с Discovery Document.

Получих 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 Хост: 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