private void AddOptionalClaims(List <Claim> claims, SwedishPersonalIdentityNumber personalIdentityNumber, DateTimeOffset?expiresUtc) { if (expiresUtc.HasValue) { claims.Add(new Claim(BankIdClaimTypes.Expires, JwtSerializer.GetExpires(expiresUtc.Value))); } if (Options.IssueAuthenticationMethodClaim) { claims.Add(new Claim(BankIdClaimTypes.AuthenticationMethod, Options.AuthenticationMethodName)); } if (Options.IssueIdentityProviderClaim) { claims.Add(new Claim(BankIdClaimTypes.IdentityProvider, Options.IdentityProviderName)); } if (Options.IssueGenderClaim) { var jwtGender = JwtSerializer.GetGender(personalIdentityNumber.GetGenderHint()); if (!string.IsNullOrEmpty(jwtGender)) { claims.Add(new Claim(BankIdClaimTypes.Gender, jwtGender)); } } if (Options.IssueBirthdateClaim) { var jwtBirthdate = JwtSerializer.GetBirthdate(personalIdentityNumber.GetDateOfBirthHint()); claims.Add(new Claim(BankIdClaimTypes.Birthdate, jwtBirthdate)); } }
protected override IEnumerable <Claim> GetClaims(BankIdGetSessionResponse loginResult) { var personalIdentityNumber = SwedishPersonalIdentityNumber.Parse(loginResult.UserAttributes.PersonalIdentityNumber); var claims = new List <Claim> { new Claim(GrandIdClaimTypes.Subject, personalIdentityNumber.To12DigitString()), new Claim(GrandIdClaimTypes.Name, loginResult.UserAttributes.Name), new Claim(GrandIdClaimTypes.FamilyName, loginResult.UserAttributes.Surname), new Claim(GrandIdClaimTypes.GivenName, loginResult.UserAttributes.GivenName), new Claim(GrandIdClaimTypes.SwedishPersonalIdentityNumber, personalIdentityNumber.To10DigitString()) }; if (Options.IssueGenderClaim) { var jwtGender = JwtSerializer.GetGender(personalIdentityNumber.GetGenderHint()); if (!string.IsNullOrEmpty(jwtGender)) { claims.Add(new Claim(GrandIdClaimTypes.Gender, jwtGender)); } } if (Options.IssueBirthdateClaim) { var jwtBirthdate = JwtSerializer.GetBirthdate(personalIdentityNumber.GetDateOfBirthHint()); claims.Add(new Claim(GrandIdClaimTypes.Birthdate, jwtBirthdate)); } return(claims); }