В ASP.NET Ядро, почему AddOpenIdConnect не имеет AuthorizationEndpoint в качестве опции, как у AddoAuth?

#asp.net-core #oauth-2.0 #openid-connect

#asp.net-core #oauth-2.0 #OpenID-connect

Вопрос:

OIDC требуется конечная точка авторизации. Тем не менее, AddOpenIDConnect не имеет опции AuthorizationEndpoint, которая есть у AddOAuth.

Ответ №1:

Обработчик соединения OpenID обычно использует специальную конечную точку «обнаружения» для поиска конечной точки авторизации (среди прочего). Он принимает ваши полномочия и добавляет к нему «/.well-known/OpenID-configuration», чтобы получить метаданные.

Оттуда он получает authorization_endpoint из JSON.

Например, установка полномочий https://login.microsoftonline.com/common/v2.0 (Azure AD) приведет к извлечению метаданных из https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration .

 {
  "authorization_endpoint":"https://login.microsoftonline.com/common/oauth2/v2.0/authorize"
}
 

Обратите внимание, что это то, что обработчик делает по умолчанию с минимальной конфигурацией.
Вы можете установить MetadataAddress вместо Authority того, чтобы устанавливать URL конечной точки обнаружения вручную.
Если вы вообще не хотите использовать конечную точку обнаружения,
вы можете указать Configuration свойство вручную:

 o.Configuration = new Microsoft.IdentityModel.Protocols.OpenIdConnect.OpenIdConnectConfiguration
{
    // Other properties omitted
    AuthorizationEndpoint = ""
};