如何在 Identity Server 中设置 .well-known/openid-configuration 端点

Posted

技术标签:

【中文标题】如何在 Identity Server 中设置 .well-known/openid-configuration 端点【英文标题】:How to set up .well-known/openid-configuration endpoint in Identity Server 【发布时间】:2017-06-23 14:18:17 【问题描述】:

我是 OpenID Connect 和 Identity Server 的新手,我正在尝试使用来自 IdentityServer3.Samples MVC 身份验证项目的示例代码设置一个测试服务器实例。问题是我看不到那里设置了 .well-known 配置端点,我不确定如何设置它。我已经做了很多搜索来寻找如何做到这一点,但是却一无所获。我还关注了 Dylan Beattie 的 this article(减去 ngrok),但它似乎忽略了示例项目中没有 .well-known 端点的事实。如何设置 .well-known/openid-configuration 端点?

【问题讨论】:

【参考方案1】:

而不是修改上述答案,那些寻找使用 IdentityServer 的 .well-known/openid-configuration 的人需要查看您在 Startup 类中定义的映射文件夹。

例如:

app.Map("/core", coreApp =>

这将更改您为其他人发布的根路径为 [website]/core/.well-known/openid-configuration

这最初对我来说并不明显,因为我错误地认为根路径会被假定为我使用的服务的一致性。

【讨论】:

【参考方案2】:

发现端点在 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>();

【讨论】:

感谢您指出这一点,我下载了源代码并查看了该控制器和配置。但是,我正在努力了解如何将其合并到 MVC 身份验证示例中。我对 Web API 和 MVC 并不陌生,但是这个 OpenId 的东西是新的。我猜如果我想要那个功能,我必须将发现控制器和配置连同所有依赖项一起放入 MVC 身份验证项目中? @AK3800 您不需要构建任何东西,它是库的一部分(我假设您通过 nuget 安装)。中间件应该负责路由。 好吧,我明白了,你是对的。 MVC 身份验证示例项目引用了 IdentityServer3 dll。当我在本地运行项目时,我能够访问身份/.well-known/openid-configuration。一旦我将它部署到开发环境中,我就会得到一个 404 试图在那里访问它。我不得不用开发站点的站点名称替换代码中的 localhost 引用,这可能是我遇到的问题。感谢您解释配置端点及其来源,这绝对有助于我了解我所缺少的!

以上是关于如何在 Identity Server 中设置 .well-known/openid-configuration 端点的主要内容,如果未能解决你的问题,请参考以下文章

SQL server中设置自增字段

如何在 Sql Server 2008 中设置唯一约束 [重复]

如何在 IBM Liberty Server 中设置 Greenplum 数据源

如何在 sql server 中设置外键列的默认值?

如何在实体框架中设置 SQL Server 2008 的登录信息?

在yii2中设置动态时区