/// <summary> /// Initializes a new instance of the JsonWebToken class, initializes claims from raw values /// </summary> /// <param name="issuerPrincipalId">Service principal id of the issuer.</param> /// <param name="tenantRealm">Realm or context id of the tenant.</param> /// <param name="audienceHostName">Audience host name.</param> /// <param name="audiencePrincipalId">Principal id of the protected resource.</param> /// <param name="nbfTime">DateTime of the NotBefore claim.</param> /// <param name="validityInSeconds">Validity of the token in seconds.</param> public JsonWebToken( string issuerPrincipalId, string tenantRealm, string audienceHostName, string audiencePrincipalId, DateTime nbfTime, long validityInSeconds) : this() { this.Issuer = JWTTokenHelper.GetFormattedPrincipal(issuerPrincipalId, string.Empty, tenantRealm); this.Audience = JWTTokenHelper.GetFormattedPrincipal(audiencePrincipalId, audienceHostName, tenantRealm); this.NotBeforeDateTime = nbfTime; this.ExpirationDateTime = DateTime.Now.ToUniversalTime().AddSeconds(validityInSeconds); }
/// <summary> /// Generates a JWT token for the given tenant, scope /// </summary> /// <param name="issuerPrincipalId">Issuer App principal id.</param> /// <param name="tenantRealm">Tenant context id.</param> /// <param name="audienceHostName">Service host name</param> /// <param name="audiencePrincipalId">Principal id of the protected resource or audience</param> /// <param name="nbfTime">Not valid before time.</param> /// <param name="validityInSeconds">Token validity duration.</param> /// <returns>A JWT token initialized with the basic claims.</returns> public static JsonWebToken GenerateSelfSignedToken( string issuerPrincipalId, string tenantRealm, string audienceHostName, string audiencePrincipalId, DateTime nbfTime, long validityInSeconds) { string issuer = JWTTokenHelper.GetFormattedPrincipal(issuerPrincipalId, string.Empty, tenantRealm); string audience = JWTTokenHelper.GetFormattedPrincipal(audiencePrincipalId, audienceHostName, tenantRealm); DateTime expirationTime = DateTime.Now.ToUniversalTime().AddSeconds(validityInSeconds); return(new JsonWebToken(issuer, audience, nbfTime, expirationTime)); }