4

我将 OAuth2 与 OpenAM 13 一起使用。我需要我的客户端应用程序能够通过 OpenAM“用户信息”端点检索用户信息。但是,我需要添加/增强提供的信息以在用户配置文件中提供自定义信息。

我无法看到如何使用“用户信息”端点执行此操作。但是,使用“令牌信息”端点很容易添加信息(添加与配置文件名称匹配的范围会自动在 JSON 响应中添加信息)。我为“用户信息”端点尝试了相同的方法,但这没有用。

在另一个 POST 中,我读到“用户信息”端点信息可以通过使用“脚本”来增强。但是我找不到怎么做: OpenAM - Use OAuth2 Access Token to get User Details?

有人可以帮忙吗?我真的很感激它。

非常感谢

4

1 回答 1

3

在默认声明脚本中,您可以通过以下方式添加其他配置文件属性

扩展“scopeClaimsMap”的“profile”键并在“claimAttributes”映射中为新声明创建映射。

由于声明脚本使用 OpenAM 的 IDRepo API,因此您需要确保在配置的用户数据存储的“用户属性”部分中配置了属性。

示例:“profile”范围的附加声明“employee_number”。

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"),
    "employee_number": attributeRetriever.curry("employeeNumber")
     ]

scopeClaimsMap = [
    "email": [ "email" ],
    "address": [ "address" ],
    "phone": [ "phone_number" ],
    "profile": [ "given_name", "zoneinfo", "family_name", "locale", "name", "email", "employee_number" ]
 ]

必须在用户数据存储配置中配置属性“employeeNumber”(如果您没有更改任何内容,则默认情况下存在)

于 2016-04-05T20:32:53.663 回答