【问题标题】:Override Sharepoint 2010 authorization - claims authentication覆盖 Sharepoint 2010 授权 - 声明身份验证
【发布时间】:2012-12-24 04:35:15
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    您可以在SPSessionAuthenticationModule 中处理事件,并在那里执行自定义逻辑。特别是,您可以覆盖 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>
    

    【讨论】:

    • 这不是我要找的。这只会让我检查索赔并修改它们。我感兴趣的是 authorization 覆盖。请再次阅读我的问题。我想插入我的代码,该代码将在每次 SP 进行授权决定而不是身份验证时执行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    相关资源
    最近更新 更多