【问题标题】:Is it possible to set a machinekey for an Azure Worker Role是否可以为 Azure 工作者角色设置机器密钥
【发布时间】:2014-01-09 18:50:25
【问题描述】:

我在 Azure Worker 角色中托管了一个 Owin WebAPI 服务器。
Owin Authentication 中间件似乎使用 MachineKey 来加密和生成令牌。 当我只有这个角色的一个实例时,这非常有效,但只要我想使用多个实例,每个实例生成的令牌都是不同的。

这与网络场的问题相同,Azure 会自动为 WebRoles 解决此问题,并为 Web.config 中的所有实例使用相同的 .net 机器密钥。

但这不适用于 Worker Role 实例。

让 Azure 对工作角色的所有实例使用相同的机器密钥是否有技巧?

似乎比重写代码为 Owin 生成令牌更容易。

【问题讨论】:

  • 在您的应用程序配置文件中手动设置机器密钥怎么样?它与传统的 Web 角色一起工作得很好,也不应该有工作者角色的问题。我再说一遍 - 在配置中手动设置密钥,不要依赖自动配置!
  • 感谢您的回答,但 App.config 不支持像 Web.config 那样设置机器 ket...
  • 是什么阻止您在 app.config 文件中包含 system.web\machineKey 部分?您在回复之前尝试过吗?
  • 是的,加载时被拒绝
  • 你解决过这个问题吗?

标签: azure azure-worker-roles machinekey


【解决方案1】:

如果您的自托管应用程序可以引用System.Web,那么您可以使用与Microsoft.Owin.Host.SystemWeb 相同的MachineKey 实现。

configuration/system.web/machineKey 设置放入您的 App.config 中,就像在 Web.config 中一样。

参考参考System.Web并添加以下类:

public class MachineKeyDataProtector : IDataProtector
{
    private readonly string[] purposes;

    public MachineKeyDataProtector(params string[] purposes)
    {
        this.purposes = purposes;
    }

    public byte[] Protect(byte[] userData)
    {
        return MachineKey.Protect(userData, this.purposes);
    }

    public byte[] Unprotect(byte[] protectedData)
    {
        return MachineKey.Unprotect(protectedData, this.purposes);
    }
}

然后使用该类设置您的身份验证选项:

        var authenticationOptions = new OAuthBearerAuthenticationOptions
                                    {
                                        AccessTokenFormat = new TicketDataFormat(new MachineKeyDataProtector(
                                            typeof(OAuthBearerAuthenticationMiddleware).Namespace, "Access_Token", "v1")),
                                        AccessTokenProvider = new AuthenticationTokenProvider(),
                                    };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-07
    • 1970-01-01
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多