使授权控制器在重定向到登录页面时添加指定的参数



我的 IdentityServer4 在未登录的用户重定向到LoginReturnUrl="WhereICameFrom"所有良好和花花公子的授权请求时Authorize控制器,但是我需要在我的查询字符串(在 URL 中(中的其他参数,如下所示:LoginReturnUrl="WhereICameFrom"&AnotherParameter="MyValue".它需要是一个单独的参数,AnotherParameter不能以任何方式包含在ReturnUrl参数的值中,所以这些不能解决问题

  • LoginReturnUrl="WhereICameFrom&AnotherParameter=MyComputedValue"

  • LoginReturnUrl="WhereICameFrom&acr_values=AnotherParameter:MyComputedValue"

这可能吗?

包含理解问题所需的所有详细信息的简短问题:我希望授权控制器在重定向到登录页面期间添加指定的参数。

不确定这是否有帮助,但您可以尝试将附加参数设置为配置的登录页面 URL 的静态部分。像这样:

services.AddIdentityServer((options) =>
{
...
options.UserInteraction.LoginUrl = "~/Account/Login?AnotherParameter=MyValue";
...
});

不过,您必须对其进行彻底的测试,因为我不认为这绝不是一种"标准"的做事方式......

是否要将参数传递给身份服务器?您可以尝试:

options.Events.OnRedirectToIdentityProvider = async n =>
{
n.ProtocolMessage.SetParameter("AnotherParameter", "MyComputedValue");
await Task.FromResult(0);
};

在身份服务器端Login方法:

var context = await _interaction.GetAuthorizationContextAsync(returnUrl);
var value = context.Parameters["AnotherParameter"];

更新:

上述解决方案将使参数包含在授权请求的redirect_uri中。

如果你想在网址之外,比如:LoginReturnUrl="WhereICameFrom"&AnotherParameter="MyValue"。然后你需要使用acr_valuesstate这是Oauth2/OIDC协议中的正确参数。

最新更新