diff --git a/token/jwt/claims_id_token.go b/token/jwt/claims_id_token.go index e9fa86288..8eadc5e53 100644 --- a/token/jwt/claims_id_token.go +++ b/token/jwt/claims_id_token.go @@ -41,6 +41,7 @@ type IDTokenClaims struct { AuthTime time.Time AccessTokenHash string AuthenticationContextClassReference string + AuthenticationMethodsReference string CodeHash string Extra map[string]interface{} } @@ -82,6 +83,10 @@ func (c *IDTokenClaims) ToMap() map[string]interface{} { ret["acr"] = c.AuthenticationContextClassReference } + if len(c.AuthenticationMethodsReference) > 0 { + ret["amr"] = c.AuthenticationMethodsReference + } + ret["iat"] = float64(c.IssuedAt.Unix()) ret["exp"] = float64(c.ExpiresAt.Unix()) ret["rat"] = float64(c.RequestedAt.Unix()) diff --git a/token/jwt/claims_id_token_test.go b/token/jwt/claims_id_token_test.go index e27e0fce9..e7d3f90c3 100644 --- a/token/jwt/claims_id_token_test.go +++ b/token/jwt/claims_id_token_test.go @@ -42,6 +42,7 @@ var idTokenClaims = &IDTokenClaims{ AccessTokenHash: "foobar", CodeHash: "barfoo", AuthenticationContextClassReference: "acr", + AuthenticationMethodsReference: "amr", Extra: map[string]interface{}{ "foo": "bar", "baz": "bar", @@ -73,5 +74,6 @@ func TestIDTokenClaimsToMap(t *testing.T) { "c_hash": idTokenClaims.CodeHash, "auth_time": idTokenClaims.AuthTime.Unix(), "acr": idTokenClaims.AuthenticationContextClassReference, + "amr": idTokenClaims.AuthenticationMethodsReference, }, idTokenClaims.ToMap()) }