Azure应用程序自定义身份验证SigningKey

时间:2016-09-20 09:43:58

标签: c# azure jwt azure-mobile-services

我正在关注以下文档: https://azure.microsoft.com/en-us/documentation/articles/app-service-mobile-dotnet-backend-how-to-use-server-sdk/来构建自定义身份验证。我想知道以下代码片段中的SginingKey格式是什么:

app.UseAppServiceAuthentication(new AppServiceAuthenticationOptions()
{
    // Here
    SigningKey = ConfigurationManager.AppSettings["authSigningKey"],
    ValidAudiences = new[] { ConfigurationManager.AppSettings["authAudience"] },
    ValidIssuers = new[] { ConfigurationManager.AppSettings["authIssuer"] },
    TokenHandler = config.GetAppServiceTokenHandler()
});

JwtSecurityToken token = AppServiceLoginHandler.CreateToken(
new Claim[] { new 
Claim(JwtRegisteredClaimNames.Sub, assertion["username"]) },
                // And here
                mySigningKey,
                myAppURL,
                myAppURL,
                TimeSpan.FromHours(24));

是Base64String吗?普通字符串?我注意到在一些分散的例子中,有时将字节数组转换为Base64String。

什么是正确的字符串格式?如何生成测试值?

2 个答案:

答案 0 :(得分:2)

签名密钥是十六进制编码的字符串。您可以将任何值用于测试目的 - 前提是用于生成JWT令牌的密钥与用于验证它们的密钥相同。

您可以通过打开浏览器https://your_app_name.scm.azurewebsites.net/Env.cshtml#envVariables并查找WEBSITE_AUTH_SIGNING_KEY值来检索Azure Web或移动应用程序中使用的值。

答案 1 :(得分:0)

用于签署密钥的任何内容。如果您要指定Base64字符串(这是正常的),那就是它。请注意,function selection() { alert("got in"); var x; var number_of_input = $("#formtable select").length; alert(number_of_input); for (var i = 1; i < number_of_input; i++) { if (i > 1) { x = (i * 9) + 5; } else { x = 14 }; alert(x); var name = "vnew_or_resold" + x; var sel = document.getElementById(name); var opt = sel.options[sel.selectedIndex]; var dd = opt.text; alert(dd); var builder = "vbuilder_name" + (x + 1); alert(builder); var build = builder.val(); alert(build); if (dd == "new") { if (build == "") { alert('Mandatory'); return false; } } } return true; } 部分仅在本地运行服务时使用。在Azure App Service中运行时,它会自动处理。