登录后有没有办法将值传回依赖方?例如在querystring
?
背景
我们要做的是告知依赖方用户采取了哪些操作,例如:登录或注册,以便依赖方可以向用户显示适当的确认消息。由于依赖方可能会链接到“注册”页面,但随后注册用户不会登录,因此依赖方不应显示“感谢加入我们”通知面板。
我尝试将&lastaction=signup
添加到returnUrl
,但在通过Azure ACS发布表单时会丢失。
下一次尝试是尝试将lastaction
添加到wreply
,如下所示:
WSFederationMessage message;
WSFederationMessage.TryCreateFromUri(uri, out message);
var signinMessage = wsFederationMessage as SignInRequestMessage;
if (signinMessage != null)
{
signinMessage.Reply += "?lastaction=hello";
...
在Fiddler中我可以看到ACS的下一个帖子发布到https://xxxxx.accesscontrol.windows.net/v2/wsfederation?lastaction=hello 但是最后的动作没有传递给我的依赖方。
答案 0 :(得分:2)
我们遇到了一个相关的问题:我们想让RP知道用户在登录时使用了哪些身份验证方法。我们通过使用命名空间创建一个新的“系统”声明解决了这个问题,并将信息放在那里。
在我们的TokenService实现中,在AddSecurityClaims方法中:
claimsIdentity.AddClaim(
new Claim(
String.Format("{0}/{1}", WellKnownConfiguration.TokenService.ClaimsNamespace,
ClaimsAuthenticationMethods), ((int) userAuthenticationMethods)));
<强>更新强> 你提到过你想过使用cookies。在那种情况下,我会做以下事情。我将实现设置cookie(例如,在注册页面时),然后再创建一个“action”,它将返回该cookie的值。当应用程序使用凭据获取POST请求时,您将使用返回URL执行重定向(立即)到该中继操作。然后,该操作将附加cookie的值并调用原始RP,但会自动执行该操作,然后正确显示视图。
将其视为cookie代理。总而言之,过程如下:
总而言之,还有一个跳,但就像我说的那样,它可能足够快,用户不会注意到和/或关心。