如何在不知道SSO场景中的DotNetNuke密码的情况下将某人登录到DotNetNuke?

时间:2013-04-26 18:30:05

标签: c# forms-authentication dotnetnuke

我们正在设置单一登录系统,以处理我们不同系统(几乎所有系统都不是DNN系统)之间的身份验证和授权。

这个想法是,中央身份验证系统会为用户提供一个链接,使用身份验证令牌将其重定向到DotNetNuke系统。然后,我需要获取该身份验证令牌,验证它是否合法,如果是,则将该用户登录到DNN。这个工作流程的问题是我不知道用户的密码。

以前,当我创建自定义登录界面时,我通过调用以下方式登录用户:

var portalSettings = PortalSettings.Current;
UserController.UserLogin(portalSettings.PortalId, username, password, string.Empty, portalSettings.PortalName, ip, ref loginStatus, true);

如果我不知道DNN / Asp.net表单身份验证系统中的密码是什么,这显然不起作用。

由于这不是一个新系统,但是目前在没有SSO的情况下在生产中使用的系统,我不能只将每个人的密码设置为“pass1234”并要求他们仅通过SSO方法登录。

如何在不知道确切密码的情况下告诉DotNetNuke以用户身份登录?

1 个答案:

答案 0 :(得分:3)

UserController还有一个额外的重载,它带有一个“UserInfo”对象。

使用UserController.GetUserByName从系统中获取实际用户,然后您可以将该对象传递给Userlogin方法,您就可以开始使用了!