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