我很难找到使用Spring实现OAuth2客户机的示例。
我使用Spring实现了OAuth2授权和资源服务器。我想从授权服务器获取访问令牌。我需要一个示例,如何从我的OAuth2服务器只使用客户端凭据获取访问令牌。不涉及用户,只是我的客户端应用程序使用客户端凭据获取访问令牌,然后使用它访问客户端资源。
我只找到了使用Java库示例,但我假设Spring的OAuth2框架中支持Java库。
如果可能,示例应该包含OAuth2客户机、OAuth2授权服务器和OAuth2资源服务器,它们都使用自签名证书通过TLS通信,使用Spring实现,不使用xml配置。
下面是序列图:
通过Spring Security OAuth2库获取访问令牌非常简单,如下所示的示例代码所示。在这种情况下,您需要的唯一依赖项是
<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();
}
}
但是当我运行我的应用程序“http://localhost/client-sample/product/1”时,它会显示“http://localhost/client-sample/spring_security_login”。但是我希望用户应该重定向到oaut2服务器页面。
我有一个安全的微服务正在调用另一个安全的微服务。这两个服务在KeyCloak中都有服务帐户。我如何配置第一个服务在调用第二个服务时自动从keycloak获得访问令牌?这是一个简单的服务到服务通信。Quarkus Rest客户机是否有API来执行此操作?如果没有,我如何使用Vert.x rest客户端来实现这一点?
顺便说一句,这些微服务只会通过中间件层互相交谈,我的意思是不需要用户凭据来允许授权(用户登录过程如Facebook)。 我在Internet上寻找了一些示例,展示了如何创建一个授权和资源服务器来管理这种通信。然而,我只是找到了一些例子,解释了如何使用用户凭据(三条腿)来实现它。 有没有人有在Spring Boot和Oauth2中如何做的样例?如果有可能提供更多关于所用范围的详细信息,令牌交换将不胜
我正在使用Spring构建Web应用程序。我有多个Spring客户端应用程序和一个OAuth2授权和资源服务器。最终用户首先在客户端应用内进行身份验证,然后客户端应用从资源服务器请求一些资源(从授权服务器获得访问令牌后),处理数据并将其返回给用户。用户也可以更改资源服务器上的数据,但只能通过客户端应用。对于仅使用客户端凭证的资源获取,在这种情况下资源所有者是可信客户端。 在资源服务器上,仅存储客户
错误:“禁止”消息:“在请求参数'_CSRF'或标头'x-xsrf-token'上发现无效的CSRF令牌'null'。 我也分享我的代码。 1)ReactJs代码
我正在开发一个angularjs网络应用。 要访问服务器端api,我需要添加一个id_token头,并通过使用接收id_token。 问题的关键是——id_token有一个过期日期。在访问服务器应用编程接口之前,我需要确保id_token还没有过期,但是如果是,显而易见的选择是刷新它。 有没有办法刷新id_令牌? 我知道我可以将访问类型更改为脱机,并接收刷新令牌,但请求脱机访问似乎很奇怪,而在我的