是否可以在没有 LoadUserProfile = True 的情况下运行 WIF

2024-05-04

我正在尝试在共享主机上运行 WIF 依赖方应用程序。他们不会将 IIS 设置 LoadUserProfile 设置为 true,因此我收到以下错误:

消息:数据保护操作失败。这可能是由于没有为当前线程的用户上下文加载用户配置文件而导致的,这可能是线程模拟时的情况。 ExceptionStackTrace:在System.Security.Cryptography.ProtectedData.Protect(Byte [] userData,Byte []可选Entropy,DataProtectionScope范围)在Microsoft.IdentityModel.Web.ProtectedDataCookieTransform.Encode(Byte []值)

有没有办法解决?


是的,这是因为您使用的是依赖于 DPAPI 的默认令牌加密。您可以将其替换为基于证书的加密。看这里:http://msdn.microsoft.com/en-us/library/ff803371.aspx http://msdn.microsoft.com/en-us/library/ff803371.aspx(滚动到“应用程序还有一项更改......” )

代码是:

void OnServiceConfigurationCreated(object sender, ServiceConfigurationCreatedEventArgs e)
{
    var sessionTransforms =
        new List<CookieTransform>(
            new CookieTransform[] 
            {
                new DeflateCookieTransform(), 
                new RsaEncryptionCookieTransform(
                    e.ServiceConfiguration.ServiceCertificate),
                new RsaSignatureCookieTransform(
                    e.ServiceConfiguration.ServiceCertificate)  
            });
    var readOnlyTransforms = sessionTransforms.AsReadOnly();
    var sessionHandler = new SessionSecurityTokenHandler(readOnlyTransforms);

    e.ServiceConfiguration.SecurityTokenHandlers.AddOrReplace(sessionHandler);
}

and

void Application_Start(object sender, EventArgs e)
{
    FederatedAuthentication.ServiceConfigurationCreated += OnServiceConfigurationCreated;
}

两者都在 global.asax.cs 上

顺便说一句,这也是配置 WIF 的“网络场友好”方式,因此它是独立于机器(实例)的。 Windows Azure 部署本质上是网络场,因此这就是您在该章中看到它的原因。

Update:在新版本中,API 已更改。更新后的代码如下所示

void OnFederationConfigurationCreated(object sender, FederationConfigurationCreatedEventArgs e)
{
    var sessionTransforms = new List<CookieTransform>(
        new CookieTransform[]
            {
                new DeflateCookieTransform(),
                new RsaEncryptionCookieTransform(e.FederationConfiguration.ServiceCertificate),
                new RsaSignatureCookieTransform(e.FederationConfiguration.ServiceCertificate)
            });
    var sessionHandler = new SessionSecurityTokenHandler(sessionTransforms.AsReadOnly());

    e.FederationConfiguration
        .IdentityConfiguration
        .SecurityTokenHandlers
        .AddOrReplace(sessionHandler);
}

and

protected void Application_Start()
{
    FederatedAuthentication.FederationConfigurationCreated += OnFederationConfigurationCreated;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

是否可以在没有 LoadUserProfile = True 的情况下运行 WIF 的相关文章

  • 如何将 federationConfiguration 从 web.config 移至某个自定义配置文件并通过代码动态加载

    我的配置在 web config 中 并且工作正常
  • 在 IIS7 中使用 WAS 时,global.asax Application_Start 等效项是什么

    我想对当前托管在 IIS7 中的 WCF 应用程序使用 netTcpBinding 这意味着将其配置为使用 WAS 这相当简单 但是 我的应用程序之前使用了 global asax 文件中的 Application Start 事件 我不需
  • ASP.NET Webforms 应用程序有时无法加载,直到 cookie 被删除

    我正在我的 Windows 7 PC 上开发 ASP NET 4 Webforms 应用程序 我正在运行VS2010和IIS7 5 我有一个奇怪的问题 在加载几个页面 从 1 到 20 左右 后 我没有从 IIS 得到任何响应 我什至无法在
  • asp.net 2.0 全局主题无法在新的 Windows Server 2008 上运行

    我们正在将 net 2 0 网站从带有 IIS6 的 Windows 2003 服务器 32 位 迁移到带有 IIS7 的 Windows Server 2008 64 位 机器 我似乎无法让全球主题发挥作用 与我们的旧服务器相同的内容 目
  • 错误请求 - 无效主机名 IIS7

    当我尝试在端口 8080 上访问我的网络应用程序时 出现以下错误 错误请求 无效主机名HTTP 错误 400 请求主机名无效 我什至不知道从哪里开始诊断这个问题 你检查一下绑定的是IIS吗 inetmgr exe 可能无法注册以接受 808
  • Web 事件提供程序“EventLogProvider”引发以下异常 [已关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我无法让新的 ASP NET 4 0
  • Signalr/Hub 未在 IIS 7 中加载,但在 Visual Studio 中正常工作

    我正在使用 SignalR 的 Asp Net 4 0 框架上开发一个 Web 应用程序 并从 Nuget 包安装了它 当我调试或运行应用程序而不进行本地调试时 它可以正常工作 但是 当它部署到生产服务器时 它无法找到signal hubs
  • IIS 中特定资源的自定义 http 状态代码

    我有一个带有单个 app offline htm 文件的网站 我如何配置 IIS 以使用特定状态代码 例如 209 而不是默认状态代码 200 返回它 使用 ASP Net 的 app offline htm 功能的替代方法是使用IIS U
  • 更改 iis 7 的 Inet 根文件夹

    我面临着一个非常令人恼火的挑战 我必须在生产服务器中部署 ASP NET MVC 3 应用程序 在这个生产服务器中我有两个驱动器C and D 我有权将我的网站放在D 数据文件夹我不能使用C 不幸的是 IIS 创建了Inet目录在C 显然
  • 将正则表达式拆分为 2 个捕获组

    好吧 我之前的问题都得到解答了 我还有一个 这个对我来说比较难 A Za z A Za z0 9 domain com 现在这个表达式只产生 1 个捕获组 如 所示 我该如何为此 URL 执行 2 个捕获组 用于IIS正则表达式重写 您可以
  • assessionid 名称更改

    如果我有一种简单的改变方法 我的生
  • app_offline.htm 文件不起作用

    我已经为此奋斗了很多年 但我就是无法让它发挥作用 我去过的每个博客 网站都说您无需在 IIS 中执行任何操作 但这并不正确 因为有多个网站配置 例如应用程序 虚拟目录 简单的 php asp 网站 虚拟网站 有人可以向我解释一下 IIS7
  • Windows iis 7.0 上的 APC 不稳定

    我的 IIS 非常不稳定 因为它总是由于某种与 APC 相关的原因而重新启动 服务器的规格如下 Intel R Xeon CPU 3GHZ 3GHZ 2GB RAM 64bit APC 和服务器规格 3 1 7 dev PHP Versio
  • HTTP请求的内容长度>正文大小

    我正在管理一个网站 该网站过去几个月在使用 MVC 3 0 ASP net 构建的 IIS 7 5 上运行良好 当我们的 AJAX POST 请求 通过 jQuery 触发 因发布的 JSON 被截断而失败时 我们时不时地会遇到一个问题 到
  • IIS - 打开基本身份验证会导致登录重定向循环

    在 IIS 站点上启用基本身份验证后 我尝试访问该站点 它不显示登录表单 而是将我重定向到其他地方 其中包含一个我无法弄清楚的长链接 http 我的域名 Login Login Login ReturnUrl 2FLogin 2FLogin
  • 如何从 PowerShell 指定应用程序池身份用户和密码

    我在自动化 Web 应用程序设置和使用应用程序池标识适当配置 IIS 方面遇到了很多困难 我在用 PowerShell 编写的 Web 应用程序部署脚本中执行此操作 我的要求是我需要 PowerShell 脚本将应用程序池身份用户设置为特定
  • WIF、STS 和会员表

    我目前正在考虑将 WIF 用于即将进行的项目 并且希望获得一些帮助查找信息 我环顾四周 并没有明确的答案 我当前有一个依靠 ASP 会员资格运行的站点 并且这些表中有大量用户 是否有任何值得信赖的自定义 STS 使用会员资格 桌子 我当前使
  • IIS7集成管道:maxConcurrentRequestsPerCPU和requestsQueueLimit设置之间的交互

    首先 这里对 IIS7 HTTP 请求生命周期以及影响性能的各种设置进行了很好的概述 IIS 7 0 和 6 0 上的 ASP NET 线程使用情况 http blogs msdn com b tmarq archive 2007 07 2
  • WIndows 身份验证不起作用

    在干净的 Windows Server 2008 R2 上新安装的 IIS 安装了所有安全选项 然后对于默认网站身份验证 启用 Windows 身份验证并禁用所有其他身份验证 然后 当访问默认页面 iisstart htm 时 它应该弹出一
  • 未为 OPTIONS Ajax 请求设置标头

    我有一个ascx page GetToken ashx public void ProcessRequest HttpContext context context Response ContentType text plain conte

随机推荐