我的 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_values
或state
这是Oauth2/OIDC协议中的正确参数。