.Net Core 2.0 - OpenID Connect - 无效的Discovery文档

时间:2018-03-13 10:10:16

标签: .net asp.net-core-2.0 openid-connect

我在.Net Core 2.0 MVC项目中使用特定的OIDC提供程序来保护我的安全,但是我在使用Discovery文档时遇到了问题。

我从提供者那里获得了3个网址(域名是虚构的):

  

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是否需要此功能?

我尝试直接在浏览器中调用发现文档网址,方法是调用此网址:https://www.oidcprovider.com/connectapi/authorize/.well-known/openid-configuration

但是,我收到了这个JSON信息:

  

{“error”:“invalid_client”,“error_description”:“未提供客户ID”}

如何让它发挥作用?

我的2个问题是:

1。 Discovery文档是可选的还是强制性的?

2。如果没有可用的disco文档,我可以在.net Core 2.0中手动指定端点吗?

1 个答案:

答案 0 :(得分: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"                 };

相关问题