禁用Sitecore中的匿名用户

时间:2014-04-24 11:21:51

标签: c# authentication sitecore single-sign-on

我使用第三方外部身份验证/单点登录服务器与Sitecore将故障单返回给Web服务器。

集成文档建议当您从服务器获得授权响应时,您可以创建自己的FormsAuthenticationTicket,然后您可以访问在票证中输入的用户UserData,如下所示:

FormsAuthenticationTicket ticket = ((FormsIdentity)   HttpContext.Current.User.Identity).Ticket;

if (ticket != null)
{
  string UserData = ticket.UserData;
  ...
}

我遇到的问题是User.Identity始终是extranet\Anonymous User

有没有办法阻止匿名用户被用作当前用户。或者我是否必须创建自己的会员提供商才能使其生效?

2 个答案:

答案 0 :(得分:2)

您可以使用Sitecore.Security.Authentication.AuthenticationManager构建虚拟用户并将该用户分配到Sitecore中的真实角色,从而避免创建自定义成员资格提供程序。这样,您可以限制对未经身份验证的用户的访问(通过拒绝对extranet\anonymous用户帐户的读取访问权限并为您的自定义Extranet角色启用读取访问权限。代码(在验证用户名/密码之后)将是这样的:

using Sitecore.Security.Authentication;

var user = AuthenticationManager.BuildVirtualUser("someone", isAuthenticated: true);
user.RuntimeSettings.AddedRoles.Add("extranet\\some role");
AuthenticationManager.LoginVirtualUser(user);

答案 1 :(得分:1)

我使用WIF模块做了类似的事情。当我从系统收到回票时,我从故障单中提取了有关用户的数据。然后我为该帐户创建/更新了Sitecore用户(我本可以使用虚拟用户,但在这种情况下,我希望帐户是真正的Sitecore帐户)。

最后一步是明确调用Login以确保当前上下文用户是新创建的用户。