我的IdentityServer4 Authorize
控制器应未登录用户的授权请求重定向到Login\ReturnUrl="WhereICameFrom"
很好,但是我需要在查询字符串(URL)中附加参数,例如:{{1} }。它必须是一个单独的参数,Login\ReturnUrl="WhereICameFrom"&AnotherParameter="MyValue"
参数不能以任何方式包含在AnotherParameter
参数的值中,因此这些不能解决问题
ReturnUrl
Login\ReturnUrl="WhereICameFrom&AnotherParameter=MyComputedValue"
有可能吗?
简短的问题,其中包含理解该问题所需的所有详细信息:我想授权控制器在重定向到登录页面的过程中添加指定的参数。
答案 0 :(得分:0)
不确定是否有帮助,但是您可以尝试使其他参数成为已配置登录页面URL的静态部分。像这样:
services.AddIdentityServer((options) =>
{
...
options.UserInteraction.LoginUrl = "~/Account/Login?AnotherParameter=MyValue";
...
});
不过,您必须进行彻底的测试,因为我认为这绝不是一种“标准”的工作方式...
答案 1 :(得分:0)
是否要将参数传递给Identity Server?您可以尝试:
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
中。
如果要在url之外,例如:Login\ReturnUrl="WhereICameFrom"&AnotherParameter="MyValue"
。然后,您需要使用Oauth2/OIDC protocol中正确的参数acr_values
或state
。