首页 > 解决方案 > IIdentityServerInteractionService 的 GetAuthorizationContextAsync(returnUrl) 在登录时返回 null

问题描述

我使用文档中的模板创建了一个 Identity 4 应用服务器。我定义数据库最初将填充 2 个标准用户。但是,当我尝试使用以前创建的任何用户登录时,页面会刷新并且没有任何反应。所以我调试了它,似乎这部分返回 null,它应该返回用户数据。

代码: var context = await _interaction.GetAuthorizationContextAsync(returnUrl);

存在

IIdentityServerInteractionService 的 _interaction 依赖注入 returnUrl = "/grants";

版本

标签: c#asp.netasp.net-coreidentityserver4identity

解决方案


AuthorizationContext是一组定义登录流程的规则。returnUrl不仅仅是登录后重定向的URL,也是IdentityServer用来识别客户端的签名(认为是客户端的登录) (即使用IdentityServer的软件,不要与用户混淆)。returnUrl必须在 IdentityServer 客户端的记录中显式设置 - 无论是在 SQL 表中还是在填充内存客户端的 Quickstart 的 config.cs 中。

returnUrl被捕获为登录 URL 的参数:https://myidentityserver.com/Account/Login?ReturnUrl=/myreturnurl。如果 IdentityServer 记录中没有匹配的客户端,GetAuthorizationContextAsync将返回 null,这是正常的。但是,如果没有客户端,它不应该阻止用户授权,即在 IdentityServer 本身内发生登录,使用它自己的 UI。


推荐阅读