外部登录后如何重定向回客户端应用程序?

时间:2018-04-13 13:16:16

标签: c# identityserver4 sustainsys-saml2

带有SustainSys.SAML的IdentityServer4在ExternalLoginCallback之后丢失了原始客户端重定向。

我正在使用IdentityServer4示例应用程序作为SustainSys.SAML netstandard分支here的指南。

我遇到的唯一问题是,当我在https://stubidp.sustainsys.com登录并重定向回我的IdentityServer4 ExternalLoginCallback()方法时,我丢失了原始客户端重定向(这是原始授权的一部分)重定向网址。当此代码返回时:

var result = await HttpContext.AuthenticateAsync(IdentityServerConstants.ExternalCookieAuthenticationScheme);

Properties.Items中的returnUrl和值是相同的,我的原始redirectUrl通过IdentityServer / authorize端点返回我的客户端应用程序(一个Angular应用程序)。

我尝试了示例应用程序,它的行为方式相同。

1 个答案:

答案 0 :(得分:1)

原来我将ExternalProvider的AuthenticationScheme设置为不正确的值。 在我在IdP登录过程中调用的BuildLoginViewModelAsync()方法中使用了错误的值:

return new LoginViewModel
            {
                EnableLocalLogin = false,
                ReturnUrl = returnUrl,
                Username = context.LoginHint,
                ExternalProviders = new[] { new ExternalProvider { AuthenticationScheme = **context.IdP** } }
            };