Как настроить конечную точку.well-known/openid-configuration в Identity Server
Я новичок в OpenID Connect и Identity Server. Я пытаюсь настроить экземпляр тестового сервера, используя пример кода из проекта аутентификации MVC IdentityServer3.Samples. Проблема в том, что я не вижу, где установлена хорошо известная конечная точка конфигурации, и я не уверен, как это сделать. Я много искал, как это сделать, но оказался пустым. Я также следовал за этой статьей от Dylan Beattie (минус ngrok), но, похоже, он игнорирует тот факт, что в примере проекта нет хорошо известной конечной точки. Как настроить конечную точку.well-known /openid-configuration?
1 ответ
Конечная точка обнаружения реализована в самом IdentityServer3:
WebApiConfig.cs
if (options.Endpoints.EnableDiscoveryEndpoint)
{
config.Routes.MapHttpRoute(
Constants.RouteNames.Oidc.DiscoveryConfiguration,
Constants.RoutePaths.Oidc.DiscoveryConfiguration,
new { controller = "DiscoveryEndpoint", action = "GetConfiguration" });
Вот контроллер DiscoveryEndpoint DiscoveryEndpointController.cs
/// <summary>
/// GET
/// </summary>
/// <returns>Discovery document</returns>
[HttpGet]
public async Task<IHttpActionResult> GetConfiguration()
{
Logger.Info("Start discovery request");
var baseUrl = Request.GetIdentityServerBaseUrl();
var allScopes = await _scopes.GetScopesAsync(publicOnly: true);
var showScopes = new List<Scope>();
Вместо того, чтобы вносить поправки в ответ, приведенный выше, тем, кто ищет конфигурацию.well-known/openid, использующую IdentityServer, нужно поискать в сопоставленной папке, которую вы определили в классе Startup.
например:
app.Map ("/ core", coreApp =>
который изменит корневой путь, который вы публикуете для других как [website]/core/.well-known/openid-configuration
Это не было изначально очевидно для меня, поскольку я ошибочно предполагал, что корневой путь будет использоваться для обеспечения согласованности услуг, которые я использовал.