使用Owin和Identity和JWT的Angular Autentication服务

时间:2015-09-23 19:30:38

标签: authentication asp.net-web-api owin jwt

我用owin和JWT建立了一个web api,当我执行该项目时,它向我显示了一个例外。这是一种消耗JWT的方法,我遇到了as:AudienceIdas:AudienceSecret的问题,它告诉我AudienceSecret为空。可能是什么问题?

private void ConfigureOAuthTokenConsumption(IAppBuilder app)
    {

        var issuer = "http://localhost:59822";
        string audienceId = ConfigurationManager.AppSettings["as:AudienceId"];
        byte[] audienceSecret = TextEncodings.Base64Url.Decode(ConfigurationManager.AppSettings["as:AudienceSecret"]);

        // Api controllers with an [Authorize] attribute will be validated with JWT
        app.UseJwtBearerAuthentication(
            new JwtBearerAuthenticationOptions
            {
                AuthenticationMode = AuthenticationMode.Active,
                AllowedAudiences = new[] { audienceId },
                IssuerSecurityTokenProviders = new IIssuerSecurityTokenProvider[]
                {
                    new SymmetricKeyIssuerSecurityTokenProvider(issuer, audienceSecret)
                }
            });
    }

1 个答案:

答案 0 :(得分:0)

此声明正在 web.config 文件中查找appSettings键:AudienceSecret

    byte[] audienceSecret = TextEncodings.Base64Url.Decode(ConfigurationManager.AppSettings["as:AudienceSecret"]);

由于结果 audienceSecret 为null。该声明未找到关键字:AudienceSecret 。最合理的解释是 web.config 中缺少密钥。你需要像这样添加 web.config 的密钥。像这样的东西

  <appSettings>
    <add key="as:AudienceId" value="414e1927a3884f68abc79f7283837fd1" />
    <add key="as:AudienceSecret" value="qMCdFDQuF23RV1Y-1Gq9L3cF3VmuFwVbam4fMTdAfpo" />
  </appSettings>

你可能想要使用不同的值,因为它是......一个秘密。