gpt4 book ai didi

azure - 如何获取和使用正确的签名 key 进行Azure移动应用程序身份验证?

转载 作者:行者123 更新时间:2023-12-03 01:49:31 25 4
gpt4 key购买 nike

我正在使用更新的 Azure 移动应用 以及 Google、Microsoft、Twitter 和 Facebook 等身份验证提供商来对我的网站的用户进行身份验证。所有这些都运行良好,在使用我的 Azure 移动应用 实例进行身份验证后,我得到了代表经过身份验证的用户的有效 JWT token 。我将此 token 作为身份验证承载 token 发送到服务器,以验证对另一个ASP.NET Core API服务的请求。所有这些都运行良好。

问题是使用正确的签名 key 值在服务器上验证JWT。为了进行测试 - 如果我将我的 JWT token 发送到 https://jwt.io/ 使用正确的算法HS256Azure粘贴我的 key ,但我仍然无法克服“无效签名”错误。在同一区域,如果我调用配置了 Microsoft.AspNetCore.Authentication.JwtBearerapp.UseJwtBearerAuthenticationASP.NET Core API 服务我从端点返回相同的 401 错误,内容如下:

401 Unauthorized: Bearer error="invalid_token", error_description="The signature is invalid"

根据Azure Mobile Apps offline WEBSITE_AUTH_SIGNING_KEY和其他一些网站,我应该使用 https://[Azure-Mobile-Site-Here].scm.azurewebsites.net/Env.cshtml 中的 WEBSITE_AUTH_SIGNING_KEY我已经获得了该值,并尝试从周日开始以 10 种方式将其用作服务器上的 IssuerSigningKey,但均未成功。我总是遇到同样的错误。

这是我在服务器上的配置。我尝试尽可能缩小范围,反编译代码并仅打开最小标志进行验证。我什么也做不了。

private void ConfigureAuth(IApplicationBuilder app)
{
//Didn't work attempt #1
//byte[] keyBytes = Encoding.UTF8.GetBytes("975BE84E150ABlahBlahBlahA2527E1AAC80606");
//if (keyBytes.Length < 64)
//{
// Array.Resize(ref keyBytes, 64);
//}

//Didn't work attempt #2
//byte[] keyBytes = _UTF8Encoder.GetBytes("975BE84E150ABlahBlahBlahA2527E1AAC80606");

//Didn't work attempt #3
//var keyAsBytes = Convert.FromBase64String("975BE84E150ABlahBlahBlahA2527E1AAC80606");

//Didn't work attempt #4
//var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("975BE84E150ABlahBlahBlahA2527E1AAC80606"));

var signingKey = new SymmetricSecurityKey(keyBytes);

var tokenValidationParameters = new TokenValidationParameters
{

RequireExpirationTime = false,
RequireSignedTokens = false,
SaveSigninToken = false,
ValidateActor = false,
ValidateAudience = false,
ValidateIssuer = false,
ValidateLifetime = false,

//The signing key must match!
ValidateIssuerSigningKey = true,
IssuerSigningKey = signingKey,
};

app.UseJwtBearerAuthentication(new JwtBearerOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
TokenValidationParameters = tokenValidationParameters
});

}

正如上面的注释,我已经尝试过使用 ValidateIssuerSigningKey = false 来尝试绕过这一切,但它不起作用。我仍然遇到同样的错误;就好像这个位对结果没有影响。

此时我感到迷失和猜测,因为我什至不确定 WEBSITE_AUTH_SIGNING_KEY 是正确的 signingKey,如果不是,我就白白浪费时间了.

Azure 移动应用 实例生成 JWT token 时使用的正确 secret /签名 key 是什么,以及如何合并它正确地在服务器上的中间件配置中验证 token ?

最佳答案

WEBSITE_AUTH_SIGNING_KEY 是适当的环境变量/应用程序设置。但是,它被编码为十六进制字符串。使用前需要对其进行解码。在Node SDK中,执行此操作的代码如下:

function hexStringToBuffer(hexString) {
var bytes = [];
for (var i = 0; i < hexString.length; i += 2)
bytes.push(parseInt(hexString.substr(i, 2), 16));
return new Buffer(bytes);
}

您只需将其转换为 C#。

关于azure - 如何获取和使用正确的签名 key 进行Azure移动应用程序身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40670255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com