有没有一种方法可以自定义Thinktecture.IdentityServer.v2登录页面?

5

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

可以根据客户端来源的源应用程序自定义登录页面吗?


这是一个MVC应用程序,因此您可以根据自己的喜好修改样式表和HTML。 - Dustin Kingen
@Romoku:这是一个SSO应用程序,因此我想它提供一些钩子来附加自定义CSS。我希望尽可能保持应用程序的代码完整性,而不必每次添加使用它作为SSO的新应用程序时进行修改。 - JohnDoDo
3个回答

4

"我似乎找不到做那件事的方法。"——你尝试了多努力? ;)

RP有额外的数据字段,因此您可以在注册数据库中将类似CSS名称挂在RP上。此外,您可以从登录页面访问该RP数据-引用AccountController中的评论:

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

顺便说一句,IdentityServer的Github存储库具有问题跟踪器-您应该使用它来提出问题。


我承认我完全错过了控制器中的那个注释,但后来在 RP 上发现了额外的数据字段,并考虑使用它们。感谢您的回答!将在 GitHub 存储库中寻找其他 IdentityServer 问题或疑问。再次感谢。 - JohnDoDo

1
你可以始终让RP通过自定义查询字符串参数并进行自定义。但此时,您已超出WS-Federation的范围。此外,您必须考虑SSO的本质——用户实际上是在登录IdP而不是应用程序。因此,将IdP更改为看起来像应用程序有些不真诚。

2
用户实际上是在登录 IdP,而不是应用程序。因此,将 IdP 更改为看起来像应用程序有点不诚实。我同意这一点,但这些是现有的内部应用程序,用户已经习惯了它们,我们现在正在更改所有的登录方式。我希望进行更改并对用户隐藏他们现在正在执行 SSO 的事实。 - JohnDoDo

0

我通过自定义SignIn.cshtml来调整样式以满足我的需求,从而解决了这个问题。此外,在SignIn.cshtml的顶部有一些服务器端代码,对ReturnUrl (Request.QueryString["ReturnUrl"])进行了一些字符串匹配。然后,根据我知道的不同RP URL的某些唯一值,显示不同的徽标和标题文本。

当升级到新版本的ThinkTecture MVC时,只需更新此文件即可(记得在升级之前备份修改过的SignIn.cshtml文件)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接