【问题标题】:Authorization point produces 404 but is specified in well-known config in IDS4授权点产生 404 但在 IDS4 中的知名配置中指定
【发布时间】:2019-05-21 09:49:26
【问题描述】:

我正在运行一个项目,试图按照this blog 之后的授权代码工作流程获取访问令牌。前往地址

https://localhost:44300/.well-known/openid-configuration

我得到一个列表说

"authorization_endpoint": "https://localhost:44300/connect/authorize", ...

但是,当我尝试 access that endpoint(在 PostMan 和浏览器中获取)时,我得到状态码 404。我选择了

"token_endpoint":"https://localhost:44300/connect/token"

而且效果很好,正如预期的那样。我尝试使用扩展方法CreateAuthorizeUrl(...) 在查询字符串as suggested 中指定参数,没有区别。谷歌搜索 ids4 授权 404 not found 只会命中 borken 路由,在这种情况下,即使是令牌端点也会受到影响。

有人建议实现我们自己的自定义端点,但这违背了 ID Server 的全部目的(而且我相信这些人比我更了解)。

我们确实确保端点是公开的(设置为 false 会将其隐藏在众所周知的范围内)。

public void ConfigureServices(IServiceCollection services)
{
  services.AddIdentityServer(opt => opt.Endpoints.EnableAuthorizeEndpoint = true)
    .AddInMemoryClients(Clients.Obtain())
    .AddInMemoryIdentityResources(IdResources.Obtain())
    .AddInMemoryApiResources(ApiResources.Obtain())
    .AddInMemoryApiScopes(ApiScopes.Obtain())
    .AddTestUsers(TestUsers.Obtain().ToList())
    .AddDeveloperSigningCredential();
}

然后就是路由和 IDS(包括添加/移动 AddAuthentication()AddAutheorization().AddDefaultEndpoints() 等的无数种不同组合)。

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
  IdentityModelEventSource.ShowPII = true;
  app.UseRouting();
  app.UseIdentityServer();
}

我们已经为此耗尽了整个团队的智慧。解决问题的明智方法是什么?

【问题讨论】:

  • 你有没有可能在 IDS4 之前在管道中注册 MVC?
  • @mackie 是的,我做到了。我去 app.UseIdentityServer() 然后是 app.UseMvc()。我希望在调用被路由到数据源之前 启动安全性。我是否混淆了概念?
  • @mackie 我指的是文档的the last code snippet in Adding UI section。如您所见,他们首先添加 IDS,然后在 MVC 中插入...

标签: c# authorization identityserver4


【解决方案1】:

当授权端点验证失败时,IdentityServer4 will redirect the user to your error page。默认情况下,这是/Home/Error。如果此错误页面不存在,则 302 重定向将导致 404。

否则,当您点击授权端点时,您的日志会说什么? IdentityServer 应该为您提供授权端点的错误日志,ASP.NET Core 应该为您提供有关 404 的信息日志。

【讨论】:

  • 我用你的配置测试了一个空项目,结果就是这样。我希望对你来说就这么简单?
  • 嘿。实际上,我非常密切地关注你关于这个主题的博客,所以我很荣幸看到你在这里回答。您的回答完全正确,这确实是我错过的偷偷摸摸。现在,我已经看到了实际的错误,我让我的客户工作了。我赞扬你的关于下一阶段的博客中有一个不清楚的地方 - 调用 /connect/authorize。您是否也愿意回答这个问题(在一个单独的问题中)或者您现在是否适合提供支持(我很感激)?
  • 不用担心。我去看看!
  • 那太棒了。它是here,我知道它可能需要一定的努力,可能会导致 FUQ,所以它也将是赏金。通常,我对代表很吝啬,但现在,这是一场与 IDS4 的公开战争 - 之前弃牌两次,但这次我不会。
猜你喜欢
  • 2014-05-26
  • 2018-11-13
  • 2021-09-20
  • 2015-08-26
  • 2021-08-03
  • 2015-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多