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

Sharepoint 2010 覆盖Sharepoint 2010授权-声明身份验证,sharepoint-2010,authorization,claims-based-identity,Sharepoint 2010,Authorization,Claims Based Identity,•我们如何覆盖SP 2010(声明验证场景)中的授权机制来执行hos自定义逻辑,而不是使用OOB SP逻辑。当我说override时,它意味着无论SP权限如何,我都应该能够通过我的逻辑允许/拒绝对任何请求资源的访问。 •通过其他讨论,我了解到我们无法覆盖SP 2010中的授权机制,但我可以在任何程度上进行定制(如模块等)。 •我已经知道,我们可以在SP完成授权之前插入自定义逻辑,并转换/添加/删除已验证用户的声明。但是定制索赔提供者无法解决我们的需求,因为我们不会了解请求中访问的资源(除了访问的

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

您可以在中处理事件,并在那里执行自定义逻辑。特别是,您可以重写SessionSecurityTokenReceived事件以检查令牌内容并基于其内容执行自定义操作。您还可以检查HttpContext.Current,查看URL、请求内容等

检查此示例代码,它可以添加到SharePoint应用程序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>

公共重写void Init()
{
FederatedAuthentication.SessionAuthenticationModule.SessionSecurityTokenReceived+=新事件处理程序(SessionAuthenticationModule\U SessionSecurityTokenReceived);
base.Init();
}
作废SessionAuthenticationModule_SessionSecurityTokenReceived(对象发送方,SessionSecurityTokenReceivedEventArgs e)
{
DateTime validFrom=e.SessionToken.validFrom;
DateTime validTo=e.SessionToken.validTo;
...
}

您可以在中处理事件,并在其中执行自定义逻辑。特别是,您可以重写SessionSecurityTokenReceived事件以检查令牌内容并基于其内容执行自定义操作。您还可以检查HttpContext.Current,查看URL、请求内容等

检查此示例代码,它可以添加到SharePoint应用程序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>

公共重写void Init()
{
FederatedAuthentication.SessionAuthenticationModule.SessionSecurityTokenReceived+=新事件处理程序(SessionAuthenticationModule\U SessionSecurityTokenReceived);
base.Init();
}
作废SessionAuthenticationModule_SessionSecurityTokenReceived(对象发送方,SessionSecurityTokenReceivedEventArgs e)
{
DateTime validFrom=e.SessionToken.validFrom;
DateTime validTo=e.SessionToken.validTo;
...
}

这不是我要找的。这只允许我检查索赔并对其进行修改。我感兴趣的是授权覆盖。请再读一遍我的问题。我想插入我的代码,每当SP做出身份验证决定而不是身份验证时都会执行。这不是我要寻找的。这只允许我检查索赔并对其进行修改。我感兴趣的是授权覆盖。请再读一遍我的问题。我想插入我的代码,每当SP做出身份验证决定而不是身份验证时,它都会执行。