覆盖Sharepoint 2010授权 - 声明身份验证

时间:2013-01-09 21:33:42

标签: sharepoint-2010 authorization claims-based-identity

•我们如何覆盖SP 2010中的授权机制(声明身份验证方案)来执行hos自定义逻辑而不是使用OOB SP逻辑。当我说覆盖它意味着我应该能够通过我的逻辑允许/拒绝访问任何请求资源,而不管SP权限如何。 •通过其他讨论,我了解到我们无法覆盖SP 2010中的授权机制,但我可以在任何程度上进行自定义(如模块等)。 •我已经知道我们可以在“SP”授权之前插入自定义逻辑并转换/添加/删除经过身份验证的用户的声明。但是我们拥有的要求无法通过自定义声明提供程序解决,因为我们无法了解请求中正在访问的资源(被访问的URL除外)。换句话说,我们希望每次SP进行授权决策时都会执行我们的逻辑,这样我们就可以根据我们要进行一些计算来确定访问哪个资源。

1 个答案:

答案 0 :(得分:1)

您可以在SPSessionAuthenticationModule处理事件,并在那里执行自定义逻辑。特别是,您可以覆盖SessionSecurityTokenReceived事件以检查令牌内容并根据其内容执行自定义操作。您还可以检查HttpContext.Current,URL,请求内容等。

检查此示例代码,该代码可以添加到SharePoint Application Global.asax文件中。

<script runat="server">
public override void Init()
{
    FederatedAuthentication.SessionAuthenticationModule.SessionSecurityTokenReceived += new EventHandler<SessionSecurityTokenReceivedEventArgs>(SessionAuthenticationModule_SessionSecurityTokenReceived);

    base.Init();
}

void SessionAuthenticationModule_SessionSecurityTokenReceived(object sender, SessionSecurityTokenReceivedEventArgs e)
{
    DateTime validFrom = e.SessionToken.ValidFrom;
    DateTime validTo = e.SessionToken.ValidTo;
    ...

}
</script>