Is it necessary to set ValidateIssuerSigningKey to true when using HMAC256 for verifying JWT Token?












0















I am using AspNet Core to build a web api and JWT tokens to authenticate users.



I see that in TokenValidationParameters the default value of ValidateIssuerSigningKey property is false.



Does it make any difference if we set it to true, when using the HMAC256 Symmetric key to sign and verify tokens (where there is no public-key added to the token like in case of RSA)?



    services
.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(cfg =>
{
cfg.RequireHttpsMetadata = false;
cfg.SaveToken = true;
string jwtIssuer = configuration["JwtIssuer"];
SymmetricSecurityKey securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtKey"]));
cfg.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = jwtIssuer,
ValidAudience = jwtIssuer,
ValidateIssuerSigningKey = true,
IssuerSigningKey = securityKey,
ClockSkew = TimeSpan.Zero
};
});


Or is it necessary to set ValidateIssuerSigningKey to true only when using RSA keys?



Here is the code level documentation of this property:



    //
// Summary:
// Gets or sets a boolean that controls if validation of the Microsoft.IdentityModel.Tokens.SecurityKey
// that signed the securityToken is called.
//
// Remarks:
// It is possible for tokens to contain the public key needed to check the signature.
// For example, X509Data can be hydrated into an X509Certificate, which can be used
// to validate the signature. In these cases it is important to validate the SigningKey
// that was used to validate the signature.
[DefaultValue(false)]
public bool ValidateIssuerSigningKey { get; set; }









share|improve this question

























  • You validate issuer when you want to check/test the token was issued by an allowed server, if you don't validate the issuer anyone with the signing key can create a token that will be valid against your server

    – saj
    Nov 21 '18 at 17:23











  • @saj Are you speaking about ValidateIssuerSigningKey or ValidateIssuer property? The latter is true by default and so I am validating the issuer.

    – Jagan
    Nov 22 '18 at 0:28
















0















I am using AspNet Core to build a web api and JWT tokens to authenticate users.



I see that in TokenValidationParameters the default value of ValidateIssuerSigningKey property is false.



Does it make any difference if we set it to true, when using the HMAC256 Symmetric key to sign and verify tokens (where there is no public-key added to the token like in case of RSA)?



    services
.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(cfg =>
{
cfg.RequireHttpsMetadata = false;
cfg.SaveToken = true;
string jwtIssuer = configuration["JwtIssuer"];
SymmetricSecurityKey securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtKey"]));
cfg.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = jwtIssuer,
ValidAudience = jwtIssuer,
ValidateIssuerSigningKey = true,
IssuerSigningKey = securityKey,
ClockSkew = TimeSpan.Zero
};
});


Or is it necessary to set ValidateIssuerSigningKey to true only when using RSA keys?



Here is the code level documentation of this property:



    //
// Summary:
// Gets or sets a boolean that controls if validation of the Microsoft.IdentityModel.Tokens.SecurityKey
// that signed the securityToken is called.
//
// Remarks:
// It is possible for tokens to contain the public key needed to check the signature.
// For example, X509Data can be hydrated into an X509Certificate, which can be used
// to validate the signature. In these cases it is important to validate the SigningKey
// that was used to validate the signature.
[DefaultValue(false)]
public bool ValidateIssuerSigningKey { get; set; }









share|improve this question

























  • You validate issuer when you want to check/test the token was issued by an allowed server, if you don't validate the issuer anyone with the signing key can create a token that will be valid against your server

    – saj
    Nov 21 '18 at 17:23











  • @saj Are you speaking about ValidateIssuerSigningKey or ValidateIssuer property? The latter is true by default and so I am validating the issuer.

    – Jagan
    Nov 22 '18 at 0:28














0












0








0








I am using AspNet Core to build a web api and JWT tokens to authenticate users.



I see that in TokenValidationParameters the default value of ValidateIssuerSigningKey property is false.



Does it make any difference if we set it to true, when using the HMAC256 Symmetric key to sign and verify tokens (where there is no public-key added to the token like in case of RSA)?



    services
.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(cfg =>
{
cfg.RequireHttpsMetadata = false;
cfg.SaveToken = true;
string jwtIssuer = configuration["JwtIssuer"];
SymmetricSecurityKey securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtKey"]));
cfg.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = jwtIssuer,
ValidAudience = jwtIssuer,
ValidateIssuerSigningKey = true,
IssuerSigningKey = securityKey,
ClockSkew = TimeSpan.Zero
};
});


Or is it necessary to set ValidateIssuerSigningKey to true only when using RSA keys?



Here is the code level documentation of this property:



    //
// Summary:
// Gets or sets a boolean that controls if validation of the Microsoft.IdentityModel.Tokens.SecurityKey
// that signed the securityToken is called.
//
// Remarks:
// It is possible for tokens to contain the public key needed to check the signature.
// For example, X509Data can be hydrated into an X509Certificate, which can be used
// to validate the signature. In these cases it is important to validate the SigningKey
// that was used to validate the signature.
[DefaultValue(false)]
public bool ValidateIssuerSigningKey { get; set; }









share|improve this question
















I am using AspNet Core to build a web api and JWT tokens to authenticate users.



I see that in TokenValidationParameters the default value of ValidateIssuerSigningKey property is false.



Does it make any difference if we set it to true, when using the HMAC256 Symmetric key to sign and verify tokens (where there is no public-key added to the token like in case of RSA)?



    services
.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(cfg =>
{
cfg.RequireHttpsMetadata = false;
cfg.SaveToken = true;
string jwtIssuer = configuration["JwtIssuer"];
SymmetricSecurityKey securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtKey"]));
cfg.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = jwtIssuer,
ValidAudience = jwtIssuer,
ValidateIssuerSigningKey = true,
IssuerSigningKey = securityKey,
ClockSkew = TimeSpan.Zero
};
});


Or is it necessary to set ValidateIssuerSigningKey to true only when using RSA keys?



Here is the code level documentation of this property:



    //
// Summary:
// Gets or sets a boolean that controls if validation of the Microsoft.IdentityModel.Tokens.SecurityKey
// that signed the securityToken is called.
//
// Remarks:
// It is possible for tokens to contain the public key needed to check the signature.
// For example, X509Data can be hydrated into an X509Certificate, which can be used
// to validate the signature. In these cases it is important to validate the SigningKey
// that was used to validate the signature.
[DefaultValue(false)]
public bool ValidateIssuerSigningKey { get; set; }






authentication asp.net-core jwt asp.net-core-webapi






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Nov 20 '18 at 22:54







Jagan

















asked Nov 20 '18 at 22:21









JaganJagan

7418




7418













  • You validate issuer when you want to check/test the token was issued by an allowed server, if you don't validate the issuer anyone with the signing key can create a token that will be valid against your server

    – saj
    Nov 21 '18 at 17:23











  • @saj Are you speaking about ValidateIssuerSigningKey or ValidateIssuer property? The latter is true by default and so I am validating the issuer.

    – Jagan
    Nov 22 '18 at 0:28



















  • You validate issuer when you want to check/test the token was issued by an allowed server, if you don't validate the issuer anyone with the signing key can create a token that will be valid against your server

    – saj
    Nov 21 '18 at 17:23











  • @saj Are you speaking about ValidateIssuerSigningKey or ValidateIssuer property? The latter is true by default and so I am validating the issuer.

    – Jagan
    Nov 22 '18 at 0:28

















You validate issuer when you want to check/test the token was issued by an allowed server, if you don't validate the issuer anyone with the signing key can create a token that will be valid against your server

– saj
Nov 21 '18 at 17:23





You validate issuer when you want to check/test the token was issued by an allowed server, if you don't validate the issuer anyone with the signing key can create a token that will be valid against your server

– saj
Nov 21 '18 at 17:23













@saj Are you speaking about ValidateIssuerSigningKey or ValidateIssuer property? The latter is true by default and so I am validating the issuer.

– Jagan
Nov 22 '18 at 0:28





@saj Are you speaking about ValidateIssuerSigningKey or ValidateIssuer property? The latter is true by default and so I am validating the issuer.

– Jagan
Nov 22 '18 at 0:28












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");

StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});

function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});


}
});














draft saved

draft discarded


















StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53402471%2fis-it-necessary-to-set-validateissuersigningkey-to-true-when-using-hmac256-for-v%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes
















draft saved

draft discarded




















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid



  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.


To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53402471%2fis-it-necessary-to-set-validateissuersigningkey-to-true-when-using-hmac256-for-v%23new-answer', 'question_page');
}
);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

MongoDB - Not Authorized To Execute Command

How to fix TextFormField cause rebuild widget in Flutter

in spring boot 2.1 many test slices are not allowed anymore due to multiple @BootstrapWith