java - Spring 安全中的 Oauth2 客户端

标签 java spring spring-security oauth

我无法找到使用 Spring 实现的 OAuth2 客户端的示例。

我有使用 Spring 实现的 OAuth2 授权和资源服务器。我想从该授权服务器获取访问 token 。我需要一个示例,了解如何仅使用客户端凭据从我的 OAuth2 服务器获取访问 token 。没有涉及用户,只有我的客户端应用程序使用客户端凭据获取访问 token ,然后使用它来访问客户端资源。

我只找到了使用 Java 库的示例,但我假设 Spring 的 OAuth2 框架支持它。

如果可能,示例应包含 OAuth2 客户端、OAuth2 授权服务器和 OAuth2 资源服务器,所有这些都使用自签名证书通过 TLS 进行通信,使用 Spring 实现,不使用 xml 配置。

这是时序图:

enter image description here

最佳答案

通过 Spring Security OAuth2 库获取访问 token 非常简单,如下所示的示例代码。在这种情况下,您唯一需要的依赖项是

<dependency>
    <groupId>org.springframework.security.oauth</groupId>
    <artifactId>spring-security-oauth2</artifactId>
    <version>2.1.0.RELEASE</version>
</dependency>

示例代码:

@Test
public void getAccessTokenViaSpringSecurityOAuthClient() {
    try{

        ClientCredentialsResourceDetails resourceDetails = new ClientCredentialsResourceDetails();
        resourceDetails.setClientSecret(TestOAuthConstants.CLIENT_SECRET);
        resourceDetails.setClientId(TestOAuthConstants.CLIENT_ID);
        resourceDetails.setAccessTokenUri(TestOAuthConstants.TOKEN_REQUEST_URL);
        resourceDetails.setScope(TestOAuthConstants.SCOPES);

        OAuth2RestTemplate oAuthRestTemplate = new OAuth2RestTemplate(resourceDetails);

        org.springframework.http.HttpHeaders headers = new org.springframework.http.HttpHeaders();
        headers.setContentType( MediaType.APPLICATION_JSON );

        OAuth2AccessToken token = oAuthRestTemplate.getAccessToken();
        System.out.println(oAuthRestTemplate.getResource());
        System.out.println(oAuthRestTemplate.getOAuth2ClientContext());
        System.out.println(token);

        assertTrue(token != null);

    } catch (Exception e) {
        e.printStackTrace();
    }
}

关于java - Spring 安全中的 Oauth2 客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38085035/

相关文章:

Java (Netbeans) - 如何在 if 语句中编写 "access denied"代码,我尽了最大努力,但没有成功..?

java - 当从 glassfish 收到系统错误时查看请求来源

Spring Boot Actuator 将跟踪端点信息写入文件

java - 如何阻止 Eclipse 卡在很长的自动完成列表上?

java - 如何在 Java 中为票证打印机提供格式和打印数据

java - Thymeleaf请求参数空值问题

java - tomcat无法加载静态文件

java - spring-boot 不调用自定义 UserDetailsS​​ervice

java - Spring Security - 本地化消息

reactjs - 为什么授权 header token 未显示在我的浏览器中