我在.Net Core 2.0 MVC项目中使用特定的OIDC提供程序来保护我的安全,但是我在使用Discovery文档时遇到了问题。
我从提供者那里获得了3个网址(域名是虚构的):
https://www.oidcprovider.com/connectapi/authorize
在我的配置中,我输入了以下值:
.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中手动指定端点吗?
答案 0 :(得分:1)
好像我找到了答案。
发现文档是可选的。
是 - 您可以通过在.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" };