ORCID 是否有 Spring 社交客户端模块?

Is there any Spring Social client module for ORCID?

有没有Spring Social client module for ORCID (Open Researcher and Contributor ID)? There are already client modules for service providers such as Spring Social Facebook, Spring Social Twitter, Spring Social LinkedIn

ORCID 提供了一个持久的数字标识符,可以区分一个研究人员和另一个研究人员。它已在全球范围内采用,在撰写本文时(2016 年 6 月),已有近 250 万个 ORCID iD 注册。

ORCID基于OAuth 2.0协议,通过ORCID提供SSO(Single Sign On)服务。越来越多的 Web 应用程序需要支持使用 ORCID 的 SSO。并且可能有更多的 Web 应用程序需要使用 ORCID 的基于 OAuth 2.0 的 REST APIs,例如,提交 articles/data 到 ORCID Registry。

Spring 社交框架已广泛用于将 Spring 应用程序连接到软件即服务 (SaaS) API 提供商,例如 Facebook、Twitter 和 LinkedIn . ORCID 的 Spring 社交客户端模块,类似于 Spring Social Facebook 等,将大大简化上述 Web 应用程序的开发,这将对出版商、机构等非常有益全世界所有学科的学术领域。

我创建了the Spring Social ORCID project, as an extension to Spring Social that enables integration with ORCID. (Note: I have devoted this project to Europe PMC, new versions will be released to its GitHub repository)

我还编写了 an example web application,它使用 Spring Social ORCID 模块(以及 Spring Social Facebook),以测试该模块并演示如何使用它,几乎与使用 Spring 社交 Facebook 相同。

不仅是 Web 应用程序,您还可以在 Web 服务中使用 Spring Social ORCID,如 the spring social orcid client example project on the rest_web_service branch 所示。 Web 服务还支持“记住我”功能。

任何 Web 应用程序都可以通过 JavaScript,使用基于 Spring Social ORCID 的 Web 服务来连接到 ORCID。我创建了 another example project 来演示这一点,它也利用了“记住我”功能。

Spring Social ORCID 项目远非完美,但我认为这是一个不错的开始 :-) 欢迎您分叉并帮助改进它。

为了跟进榆次,我创建了一个 Spring 和 Spring 引导集成示例的存储库。有些只需要配置。 ORCID 最近发布了 OpenID Connect 和隐式 OAuth 功能,您现在还可以使用少数 javascript 进行客户端身份验证。

ORCID 端的更改意味着 Spring 启动只需要 this:

@SpringBootApplication
@EnableOAuth2Sso
@Controller
public class ReallySimpleOrcidOauthApplication {

    @RequestMapping("/")
    @ResponseBody
    public final String home() {
        return "Welcome, " + SecurityContextHolder.getContext().getAuthentication().getName();
    }

    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(ReallySimpleOrcidOauthApplication.class);
        Properties properties = new Properties();
        properties.put("security.oauth2.client.clientId", "XXX");
        properties.put("security.oauth2.client.clientSecret", "XXX");
        properties.put("security.oauth2.client.accessTokenUri", "https://sandbox.orcid.org/oauth/token");
        properties.put("security.oauth2.client.userAuthorizationUri", "https://sandbox.orcid.org/oauth/authorize");
        properties.put("security.oauth2.client.tokenName", "access_token");
        properties.put("security.oauth2.client.scope", "openid");
        properties.put("security.oauth2.resource.userInfoUri", "https://sandbox.orcid.org/oauth/userinfo");
        application.setDefaultProperties(properties);
        application.run(args);
    }
}

还有一个使用 JWT 的仅客户端隐式流的示例。这个和更多 ORCID OAuth 和 OpenID 连接示例可以是 found on github