如何在 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 2008 中设置唯一约束 [重复]
如何在 IBM Liberty Server 中设置 Greenplum 数据源