我用owin和JWT建立了一个web api,当我执行该项目时,它向我显示了一个例外。这是一种消耗JWT的方法,我遇到了as:AudienceId
和as: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)
}
});
}
答案 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>
你可能想要使用不同的值,因为它是......一个秘密。