有没有办法自定义Thinktecture.IdentityServer.v2登录页面?

时间:2013-06-13 16:35:29

标签: c# asp.net single-sign-on claims-based-identity thinktecture-ident-server

我正在使用Thinktecture.IdentityServer.v2应用程序为几个内部应用程序执行SSO,但希望为每个应用程序自定义登录页面以获得更流畅的用户体验。我似乎找不到办法做到这一点。

是否可以根据客户端所在的源应用程序自定义登录页面?

3 个答案:

答案 0 :(得分:4)

“我似乎找不到办法做到这一点。” - 你有多努力? ;)

RP具有额外的数据字段 - 因此您可以在注册数据库中像RP一样挂起RP。此外,您可以从登录页面获取RP数据 - 引用AccountController中的注释:

//您可以调用AuthenticationHelper.GetRelyingPartyDetailsFromReturnUrl以获取有关请求的依赖方的更多信息

btw - IdentityServer的github repo有一个问题跟踪器 - 你应该用它来解决问题。

答案 1 :(得分:1)

您始终可以让RP传递自定义查询字符串参数并自定义。但是那时你已经超出了WS-Federation的范围。此外,您必须考虑SSO的本质 - 用户真正登录IdP,而不是应用程序。所以改变IdP看起来像应用程序有点不诚实。

答案 2 :(得分:0)

我已经通过自定义 SignIn.cshtml 来解决这个问题,以便根据我的需要调整样式。另外,我在 SignIn.cshtml 的顶部有服务器端代码,它在ReturnUrl(Request.QueryString["ReturnUrl"])上执行一些字符串匹配。然后我根据我知道的不同RP网址的一些值显示不同的徽标和标题文本。

升级到ThinkTecture MVC的新版本时,只需将此文件更新为您的具体内容即可轻松完成任务(请记住在您之前获得修改后的 SignIn.cshtml 的副本升级)。