是否可以在没有 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 的相关文章

  • IIS7 集成与经典管道 - 哪个使用更多 ASP.NET 线程?

    通过集成管道 所有请求都通过 ASP NET 传递 包括图像 CSS 而在经典管道中 默认情况下仅通过 ASP NET 传递对 ASPX 页面的请求 集成管道会对线程使用产生负面影响吗 假设我从 IIS 服务器请求 500 MB 二进制文件
  • 在联合身份令牌上获取“不是有效的 Base-64 字符串”

    浏览我的 mvc3 azure Web 角色时 我随机收到 Base 64 编码错误 我使用带有被动身份验证的 WIF 对我的 ADFS 服务器进行身份验证 我无法确定这是从哪里来的 但我有一个想法 并希望得到一些反馈 帮助 从调用堆栈来看
  • System.Web.Routing.RouteCollection.GetRouteData 中的异常

    我在 iis7 上运行的 ASP NET MVC 代码中随机出现两个异常 Exception type InvalidOperationException Exception message Collection was modified
  • 性能分析 asp.net,什么是 ProcessRequestNotificationHelper?

    我正在对每秒 20 个用户的负载下的 ASP NET Web 应用程序进行性能分析 20 个用户基本上使应用程序瘫痪 并且无法加载任何内容 我正在使用 RedGate 性能分析器 但我不知道如何使用它 12 的时间花在我的代码上 我可以深入
  • .NET 4.0 框架与 .NET 1.1 位于同一服务器上

    这些框架版本可以在同一台服务器上正常运行吗 这意味着 IIS 可以支持两个应用程序池 其中一个池配置为 NET 4 0 另一个池配置为 NET 1 1 编辑 这个问题与 IIS 7 有关 是的 您可以在同一个 IIS 实例中运行 1 1 2
  • FTP 错误 530 用户无法登录

    我正在尝试通过 FTP 访问我使用 Windows Server Web 64 位 版本的 IIS 7 0 设置的新 FTP 站点 但是当我尝试登录该网站时出现上述错误 但我可以登录到我的其他 FTP 站点 另外 当我从 IIS 管理器中选
  • 在 IIS7 中使用 WAS 时,global.asax Application_Start 等效项是什么

    我想对当前托管在 IIS7 中的 WCF 应用程序使用 netTcpBinding 这意味着将其配置为使用 WAS 这相当简单 但是 我的应用程序之前使用了 global asax 文件中的 Application Start 事件 我不需
  • 错误请求 - 无效主机名 IIS7

    当我尝试在端口 8080 上访问我的网络应用程序时 出现以下错误 错误请求 无效主机名HTTP 错误 400 请求主机名无效 我什至不知道从哪里开始诊断这个问题 你检查一下绑定的是IIS吗 inetmgr exe 可能无法注册以接受 808
  • IIS7 上的 HTTP 错误 500.19 为 0x8007000d web.config 中的“XML 格式错误”

    我被迫从出厂默认值重建我的机器 一切都应该是相同的 IIS 版本 7 5 操作系统 Windows 7 和我的网站文件 但是 情况有所不同 因为在配置我的网站并在浏览器中拉出本地网站后 我收到以下错误 HTTP 错误 500 19 内部服务
  • 初始化字符串的格式不符合从索引 0 开始的规范

    我有一个 ASP Net MVC 应用程序 它在我的本地开发计算机上运行良好 但是部署到IIS7后尝试登录时出现以下错误 初始化字符串格式不符合规范 从索引 0 开始 大多数发布此错误的人通过以某种方式更改连接字符串来解决它 但是 我在本地
  • IIS 中特定资源的自定义 http 状态代码

    我有一个带有单个 app offline htm 文件的网站 我如何配置 IIS 以使用特定状态代码 例如 209 而不是默认状态代码 200 返回它 使用 ASP Net 的 app offline htm 功能的替代方法是使用IIS U
  • 将正则表达式拆分为 2 个捕获组

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

    简单的问题 我启动 VS2008 并创建一个新的 WCF 服务应用程序 这将创建一个默认应用程序 并使用一些测试方法来显示它的工作原理 我按 CTRL F5 确实有效 伟大的 但是 它使用 Visual Studio 开发服务器 我不想支持
  • 在 IIS 中启用 JavaScript GZIP 压缩?

    我们希望使用 GZip 压缩庞大的 JavaScript 文件 以加快网站的页面加载速度 我知道这可以通过 IIS 来完成 但我似乎找不到关于如何实现它的简单分步指南 如果有人能向我指出这样的指南 我将非常感激 我以前从未这样做过 所以它需
  • 奇怪的 ASP.NET 错误!

    我正在运行带有 IIS 7 5 的 Windows 7 x64 版本 我有一个简单的 asp net 网站 我在其他版本的 Windows 和 IIS 上运行该网站 但现在在某些页面上出现以下错误 异常信息 异常类型 HttpParseEx
  • 为什么从 ASP.NET 页面调用的 DLL 中出现异常后,我的 IIS7 应用程序池会关闭?

    我已阅读帖子ASP NET应用程序池关闭问题 https stackoverflow com questions 4742122 asp net application pool shutdown problem and IIS 7 5 应
  • PHP 在 IIS7 上未报告任何错误

    我正在使用我们的 XAMPP 设置作为测试服务器来开发 PHP 应用程序 一旦应用程序准备好部署 我必须将其上传到客户端的服务器 问题是客户端的服务器正在运行 IIS 7 每次出现 PHP 错误时 它只会显示一个空白页面 现在 我的应用程序
  • 尝试从 C# 服务查询 IIS 时出现异常

    我从使用 C 编写的 Windows 服务调用以下代码 try ServerManager m new ServerManager if m null SiteCollection sites m Sites I get exception
  • 如何在任何给定时刻找到我的网站 (IIS 7/asp.net) 的访问者/用户数量?

    我需要显示有多少用户正在浏览我的网站 该网站运行在iis7上 我们使用的是asp net 3 5 活跃会话的数量是一个好的方法吗 该数字不需要非常准确 不需要历史记录 我只想知道现在有多少用户 在线 并将其显示在页面本身上 您可以为此使用
  • 我如何向 Windows Server IIS 7 中的文件夹授予权限

    我是 PHP 和 Windows Server 新手 在查看我在 PHP 中创建的表单时遇到以下错误 Error in exception handler The stream or file C inetpub wwwroot wrp a

随机推荐