无论如何,我都不是 SharePoint 专家,而且我一直很难找到这方面的正确信息。请帮忙!
我需要一种方法来通过调用来建立声明令牌,SPFederationAuthenticationModule.SetPrincipalAndWriteSessionToken以重新计算令牌上的声明,而无需注销当前用户。有没有办法做到这一点?
关于我为什么要问这个的一些背景:
我们在自定义 SharePoint 2010 Web 应用程序上为 authN/Z 使用自定义角色和成员资格提供程序。无需详细说明原因(这很复杂),角色提供者会根据用户在主应用程序数据库中的状态为用户创建动态生成的角色名称;这些角色代表用户的权限,并在 SharePoint 内部用于确定用户对应用程序中网站和网站集的访问权限。
在我们的应用程序中,用户可以通过多种方式更改其权限,通过角色提供程序有效地添加新角色,授予用户在应用程序内的额外访问权限。我们遇到的问题是,我们被迫在 SP2010 中使用的基于声明的身份验证会在登录时预先计算权限并将这些权限编码到会话令牌中——有效地迫使我们要求用户在他们之前注销并重新登录可以获得他们的新权限。这会产生各种可用性问题,因此是我的问题。
是否有某种方法可以在不注销用户的情况下以编程方式重新计算会话令牌?
还是我们找错了树?在我正常快乐的 ASP.NET 领域中,我会使用 Forms Auth,它会在每个请求而不是登录时计算授权。不幸的是,这似乎不是 SP2010 中的一个选项,我现在相当坚持使用 SharePoint。我们可以采取其他行动吗?