本教程描述了验证一个 ORCID ID。 它可以使用以下任一方法完成 国家 or 会员API。它回顾了检索的步骤 专利 ORCID iD,然后可以将其存储在系统的数据库中。有两个选项:3 条 OAuth(用于长期更新权限)和隐式 OAuth(用于只读短期权限)。
获取一些客户端凭据
客户端凭据是您的应用程序/网站将用于访问 ORCID API。 任何人都可以注册只读的公共 API 凭证, ORCID 会员可以注册会员API。
我们建议开发人员在 沙盒测试服务器 在使用生产版本之前。 以下是有关如何在沙盒和生产环境中注册公共 API 凭证的步骤。
- 登录你的 ORCID 记录:
生产服务器: https://orcid.org/signin
沙盒测试服务器: https://sandbox.orcid.org/signin - 在右上角点击你的名字
- 点击 开发者工具 从菜单选项
请注意: 为了访问开发人员工具,您必须验证您的电子邮件地址。 如果您尚未验证您的电子邮件地址,系统会提示您进行验证,然后才能注册公共 API 凭据 - 阅读并同意‘ORCID 公共客户服务条款
- 点击“注册 ORCID 公共 API 凭证”按钮。
填写申请详情表
- 注册公共 API 凭证后,您将被引导回开发人员工具(https://orcid.org/developer-tools or https://sandbox.orcid.org/developer-tools).
- 您需要填写提交的申请详细信息表以注册新申请。
- 名字:您的应用程序的名称。 当用户授予您的应用程序权限以获取他们的权限时,这将显示给用户 ORCID iD,它将显示在他们的 受信任组织列表. 我们建议使用您的组织或服务的名称(例如期刊名称)。
- 申请网址: 用户可以访问该网站以了解有关您的应用程序的更多信息。 这也将显示在他们的 受信任组织列表.
- 应用说明:有关您正在开发的应用程序以及您将如何使用用户的应用程序的信息 ORCID ID。 这将在 OAuth 屏幕上向用户显示。
添加 重定向 URI
用户授权您的应用程序后,他们将返回到您指定的 URI。 您必须提前提供这些 URI,否则您的集成用户将遇到错误。
- 在提供的框中输入您的重定向 URI
- 如果您需要输入超过 1 个重定向 URI,请单击“添加另一个重定向 URI”
请注意:
- 只有 HTTPS URI 已在生产中接受
- 已注册的域 必须 与使用的域完全匹配,包括子域
- 尽可能完整注册所有重定向 URI。 这是最安全的选项,也是我们推荐的选项。 有关重定向 URI 的更多信息,请参阅我们的 重定向 URI 常见问题解答
保存您的申请
填写完申请表并添加重定向 URI 后,您可以保存您的申请。
- 单击“保存我的应用程序并生成我的客户端” ID 和秘密'
您将被引导回开发人员工具页面,该页面现在将包含您的公共 API 客户端凭据
更新您的凭据
更改您的申请信息非常简单。
- 编辑相关信息,然后点击“保存申请”
使用您的凭据
现在您已拥有凭据,是时候开始使用 ORCID 公共API!
请注意,如果您成为会员,我们可以将您的凭据传输到会员 API ORCID 会员 在未来。
您还可以 请求沙箱会员 API 凭证 构建和测试您的应用程序。 这些凭据允许您调用沙箱成员 API 以读取、写入和更新 ORCID 记录。 任何人都可以免费访问沙盒测试环境,即使您不是 ORCID 会员组织。
备注: 如果您使用的第三方系统已经支持 ORCID,您可能不需要注册沙盒 API 凭据。
沙箱让您可以创建测试用户帐户并开发您的集成,而不必担心影响实时(生产)上的数据 ORCID 注册表。 沙箱的行为方式与生产相同 ORCID 注册与 一些例外.
创建测试帐户
为了测试 ORCID API 和 API 调用,例如读取和添加信息到 ORCID 记录,您还需要创建一个测试 ORCID 记录在沙箱中。 这可以通过用户界面完成,就像在生产中一样 ORCID 注册表。 去 https://sandbox.orcid.org/register 并注册一个帐户。
邮寄者电子邮件地址
沙箱服务器仅将通知电子邮件发送至 Mailinator (@mailinator.com) 电子邮件地址,以免无意中向邮件服务器发送垃圾邮件。 除非您使用@mailinator.com 地址,否则您不会收到验证电子邮件或密码重置通知,并且需要验证才能对沙盒记录进行任何手动编辑。 详细了解他们免费使用的公共收件箱 点击此处。 如果您不想使用 Mailinator 地址,然后请记下您的用户名和密码(因为您将在测试时使用它们向您的应用程序授予授权),并联系我们请求验证帮助。
Mailinator 是一种具有公共免费服务和私人付费服务的电子邮件服务。 对于测试,您可以使用完全免费的公共服务。 了解更多关于他们的等级 点击此处.
Mailinator 是第三方服务,不受管理或维护 ORCID. 我们建议您在使用这些地址之前查看此服务的工作原理及其限制。
注册您的重定向 URL
登录后,用户将被发送到您指定的 URL,作为注册客户端的一部分。
什么是重定向 URI,它们是如何使用的?
我们的 OAuth 身份验证服务使用重定向 URI 作为安全措施。 ORCID 只会将身份验证用户发送到请求身份验证的客户端注册的 URI。 这可以防止服务相互模仿。
请注意: 仅 HTTPS URI 在生产中被接受。 您可以使用 HTTP URI 进行测试,但您需要注册 HTTPS URI 当您申请生产成员 API 凭证时。
我们如何匹配重定向 URI?
- 您必须将子域注册为单独的 URI. https://anythingelse.thirdparty.com 将不起作用。
- 鼓励完全注册所有重定向 URI,包括路径, 是大多数第三方所做的,也是最安全的选择。
- 如果客户端应用程序注册的重定向 uri 只是主机名,则可以使用该主机上的任何重定向 uri. 因此,例如,如果注册了以下重定向 uri: https://thirdparty.com 那么以下所有 redirect_uris 都将起作用:
- https://thirdparty.com/oauth/callback1
- https://thirdparty.com/callback2
- https://thirdparty.com/anything-else-as-long-as-the-host-is-the-same
但是,https://anythingelse.thirdparty.com 不管用。 完全 必须 将子域注册为单独的 URI。
如果我的重定向 URI 不正确会怎样?
发送到验证的用户 ORCID 使用不正确的重定向 URI 将看到类似于此的错误消息:
管理成员的重定向 URI
如果您使用会员 API 并需要对重定向 URI 进行任何更改,请联系我们的参与团队
管理公共客户端的重定向 URI
如果您使用公共 API,则需要按照以下步骤更新与您的关联的重定向 URI 列表 ORCID 公共 API 客户端 ID。 您可以按照以下步骤执行此操作:
- 登录到您的 ORCID 记录
- 点击右上角你的名字
- 选择开发者工具
- 点击客户名称旁边的编辑铅笔
- 编辑现有的重定向 URI 或单击“添加另一个重定向 URI”编辑现有的
- 完成更改后,您需要单击保存图标
仅 HTTPS URI 在生产中被接受。 您可以使用 http URI 进行测试,但在申请生产成员 API 凭证时需要注册 HTTPS URI。
实施 OAuth
下面我们解释了 OAuth 支持的三种“风格” ORCID. 大多数编程语言都有可用的 OAuth 和/或 OpenID 库,使集成更容易。
三足OAuth
这是验证用户身份的标准方法 ORCID iD 并且可用于与经过身份验证的人一起获取长期更新权限 ORCID ID。
ORCID 集成使用“3legged OAuth”来验证用户并请求与他们的记录交互的权限。 任何集成都可以使用公共 API 请求读取权限。 ORCID 会员可以使用会员 API 请求更新权限。 它是这样工作的:
- 您创建了一个特殊链接
- 单击时,用户将被发送到 ORCID
- ORCID 要求用户登录
- ORCID 要求用户授予您的应用程序权限
- ORCID 使用授权码将用户发送回您的系统
- 您的系统将该代码交换为访问令牌
定制的授权 URL 包括您的客户信息,以及指定您希望访问的他们记录的特定区域的“范围”。 登录后,用户授权与您的系统的连接,并与授权代码一起返回到您的登录页面。 然后使用此代码获取他们的 ORCID iD 以及对请求的范围有效的访问令牌。
您可以通过指定 API 凭据的客户端来构建授权链接 ID 和相关的登陆页面(重定向 URI)。 您可以通过设置来选择要请求的权限 范围参数.
下面的示例请求读取限制访问数据的权限 ORCID 沙盒测试服务器。 在现实世界中,您会在您的网站上显示此链接,或者在要求用户进行身份验证和授权时将其包含在电子邮件中。 但是,出于测试目的,您可以简单地将其粘贴到您的网络浏览器中。 用您的客户信息替换括号内的数据,并确保删除方括号!
https://sandbox.orcid.org/oauth/authorize?client_id=[Your client ID]&response_type=code&scope=/read-limited&redirect_uri=[Your landing page]
一个用户点击了链接,登录于 ORCID 并授予权限,它们将被重定向回您的站点,如下所示:
https://[Your landing page]?code=Q70Y3A
您应该立即交换授权码 ORCID iD 和访问令牌。 授权码在使用时过期。 请求看起来像这样 不能在网络浏览器中制作,它必须由您的服务器制作。
URL=https://sandbox.orcid.org/oauth/token
HEADER: Accept: application/json
HEADER: Content-Type: application/x-www-form-urlencoded
METHOD: POST
DATA:
client_id=[Your client ID]
client_secret=[Your client secret]
grant_type=authorization_code
code=Six-digit code
redirect_uri=[Your landing page]
ORCID 然后将返回研究人员的身份验证 ORCID iD 和一个 JSON 格式的访问令牌:
{"access_token":"f5af9f51-07e6-4332-8f1a-c0c11c1e3728","token_type":"bearer",
"refresh_token":"f725f747-3a65-49f6-a231-3e8944ce464d","expires_in":631138518,
"scope":"/read-limited","name":"Sofia Garcia","orcid":"0000-0001-2345-6789"}
默认情况下,访问令牌是长期存在的,并在发行后 20 年到期。 令牌在到期前可以多次使用。
使用访问令牌
三足访问令牌链接到特定的 ORCID 记录。 要使用它们,您可以将它们包含在您为读取或更新该记录而发出的 API 请求中。
隐式 OAuth
这是验证用户身份的以浏览器为中心的方式 ORCID iD 供不需要更新权限的基于浏览器的应用程序使用。
隐式 OAuth 是 OAuth 的轻量级版本,旨在供没有或不想使用服务器端组件的系统使用。 隐式 OAuth 可以完全在浏览器中单独使用 javascript 实现。 它适用于会员和非会员,工作方式如下:
- 您创建了一个特殊链接
- 单击时,用户将被发送到 ORCID
- ORCID 要求用户签署我
- ORCID 要求用户授予您的应用程序权限
- ORCID 将用户发送回您的系统 ORCID iD、访问令牌和 id 令牌。
- 您的系统提取并存储经过身份验证的 ORCID iD 从响应。
出于安全原因,在使用隐式 OAuth 时, ORCID 不会返回具有更新权限的访问令牌。
隐式流
隐式流程的设计使得客户端不需要使用他们的秘密密钥来启动 ORCID 登录。通过将客户端限制到其注册的 redirect_url 来强制执行安全性。 这种较低的安全级别意味着 ORCID 使用隐式流时仅支持 /authenticate 和 openid 范围。 代币也是短暂的,只有 10 分钟的寿命。 建议将此流程用于无法访问后端服务器的客户端应用程序,例如电话应用程序或单页 javascript web 应用程序。
https://localhost/#access_token=24c11342-f5da-4cf9-94a4-f8a72a30da00&token_type=bearer&expires_in=599&tokenVersion=1&persistent=false&id_token=eyJraWQiOiJxYS1vcmNpZC1vcmctcjlhZmw3cWY2aG2c5bmdzenU1bnQ3Z3pmMGVhNmkiLCJhbGciOiJSUzI1NiJ9.eyJhdF9oYXNoIjoiMW52bXZBbVdwaVd0Z3ZKZW1DQmVYUSIsImF1ZCI6IkFQUC02TEtJSjNJNUIxQzRZSVFQIiwic3ViIjoiMDAwMC0wMDAyLTUwNjItMjIwOSIsImF1dGhfdGltZSI6MTUwNTk4Nzg2MiwiaXNzIjoiaHR0cHM6XC9cL29yY2lkLm9yZyIsIm5hbWUiOiJNciBDcmVkaXQgTmFtZSIsImV4cCI6MTUwNTk4ODQ2MywiZ2l2ZW5fbmFtZSI6IlRvbSIsImlhdCI6MTUwNTk4Nzg2Mywibm9uY2UiOiJ3aGF0ZXZlciIsImZhbWlseV9uYW1lIjoiRGVtIiwianRpIjoiY2U0YzlmNWUtNTBkNC00ZjhiLTliYzItMmViMTI0ZDVkNmNhIn0.hhhts2-4-ibjXPW6wEsFRaNqV_A-vTz2JFloYn7mS1jzQt3xuHiSaSIiXg3rpnt1RojF_yhcvE9Xe4SOtYimxxVycpjcm8yT_-7lUSrc46UCt9qW6gV7L7KQyKDjNl23wVwIifpRD2JSnx6WbuC0GhAxB5-2ynj6EbeEEcYjAy2tNwG-wcVlnfJLyddYDe8AI_RFhq7HrY4OByA91hiYvHzZ8VzoRW1s4CTCFurA7DoyQfCbeSxdfBuDQbjAzXuZB5-jD1k3WnjqVHrof1LHEPTFV4GQV-pDRmkUwspsPYxsJyKpKWSG_ONk57E_Ba--RqEcE1ZNNDUYHXAtiRnM3w
看看我们的 技术文档 获取更多信息.
开放ID
OpenID 建立在 OAuth 之上,并提供了一些附加功能。
OpenID Connect 1.0 是 OAuth 2.0 协议之上的一个简单的身份层。 它补充了现有的 OAuth 身份验证流程,并以良好描述的方式向客户端提供有关用户的信息。
OpenID 连接是实现 OAuth 和共享有关已验证用户的信息的标准化方法。 现在可以配置要使用的服务 ORCID “开箱即用”以及其他符合标准的 OpenID 连接提供商。 OpenID 连接还提供了可共享的 ID 令牌,它们是签名对象,可以证明用户使用 ORCID 在特定时间。 用户界面元素可以使用这些令牌来维护用户会话。
ORCID 支持 Basic OpenID Provider 一致性配置文件,它是 OAuth 授权代码流的扩展。 ORCID 还支持“/authenticate”和“openid”范围的隐式令牌流。
这意味着 ORCID:
- 嵌入签名 id 使用“openid”范围生成的授权代码的令牌响应中的令牌
- 使用“token”或“token id_token” response_types 和“openid”范围时支持隐式流。
- 支持包含“openid”范围的授权请求的“prompt”、“nonce”和“max_age”参数。
- 支持 Openid Connect 发现和 userinfo 端点
- 支持使用成员 API 的集成商的 'amr' 字段来处理包含“openid”范围的授权请求。 这可用于发现用户是否使用两因素身份验证进行身份验证。
启动 OpenID Connect 身份验证的工作方式与常规 OAuth 身份验证相同。 所需要的只是客户端请求“openid”范围如果您使用/authenticate 范围,请将其替换为openid,因为authenticate 和openid 具有相同的授权,只能使用一个或另一个。 如果您使用任何其他范围,请将 openid 添加到请求的范围列表中。 当包含 openid 范围时,注册表将在令牌响应中返回一个 id_token 并授予客户端访问该用户的用户信息端点的权限。
请注意,“openid”范围不像其他范围那样以“/”开头 ORCID API 范围。 这是因为“openid”范围不是由 ORCID,而是由 OpenID Connect 规范定义。
看看我们的 技术文档 获取更多信息.
使用 ORCID的 OAuth Java 脚本小部件
ORCID 提供了一个简单的 Java 脚本小部件 可用于获取经过身份验证的 ORCID 使用 OAuth 和 OpenID Connect 的 ID。
请注意,该小部件使用隐式 OAuth,因此不会收集任何写入权限。 这意味着它不适合希望更新记录的成员集成。 请参阅我们的教程 添加和更新数据 ORCID 纪录。