Я ищу чистый способ добавить заявку с вложенными претензиями ( act претензия) в сценарии претензий OIDC OpenAM 13.5.
Я нашел этот пример (реализация may_act https://forum.forgerock.com/2018/04/token-exchange-and-delegation/) и я попытался воспроизвести его в своем собственном скрипте, но это приводит к ошибкам.
def act = [:]
act.put("sub","test_value")
claimAttributes = [
"email": attributeRetriever.curry("mail"),
"address": { claim, identity, requested -> [ "formatted" : attributeRetriever("postaladdress", claim, identity, requested) ] },
"phone_number": attributeRetriever.curry("telephonenumber"),
"given_name": attributeRetriever.curry("givenname"),
"zoneinfo": attributeRetriever.curry("preferredtimezone"),
"family_name": attributeRetriever.curry("sn"),
"locale": attributeRetriever.curry("preferredlocale"),
"name": attributeRetriever.curry("cn"),
"act": act
]
// {scope}: [ {claim}, ... ]
scopeClaimsMap = [
"email": [ "email" ],
"address": [ "address" ],
"phone": [ "phone_number" ],
"profile": [ "given_name", "zoneinfo", "family_name", "locale", "name", "act" ]
]
Тем не менее, кажется, что это решение не работает с механикой, которая реализованадалее в сценарии (см. строку 104 в ссылке): https://framagit.org/teddyber/openam/blob/6abc59040d06d996c981e94b404d79f0b97e6b2b/openam-scripting/src/main/groovy/oidc-claims-extension.groovy
Это первое решение приводит к ошибкам в журналах OAuth2Provider.
Я также пытался внедрить утверждение непосредственно перед концомсценария, но это приводит к нечитаемому JWT / id_token
computedClaims["act"] = act
return new UserInfoClaims((Map)computedClaims, (Map)compositeScopes)
Знаете ли вы, как лучше всего реализовать это, используя / сохраняя механику, которая реализована в этом сценарии?