如何在普通的Java控制台应用程序中获取令牌?

时间:2019-01-09 15:14:31

标签: java angular spring keycloak

我使用keycloak来确保有角度的前端登录到Spring Boot后端。到目前为止效果很好。为此,我使用隐式流和angular-oauth2-oidc。

现在我的问题是:我有第三个应用程序,它是一个普通的Java控制台应用程序(批处理作业,无需用户交互)。此应用程序还应该能够与后端rest api通信,但是具有固定的令牌或通过用户名/密码。

如何在控制台应用程序中获取承载令牌?有API和示例吗?

2 个答案:

答案 0 :(得分:1)

使用与Spring应用程序中使用的相同方法来请求令牌,但使用Spring的RestTemplate呢?

因此,首先您需要通过调用身份验证服务来获取令牌,然后一旦成功获取令牌,便以Authorization: Bearer <token>的形式将其添加到标头中,并随后向执行业务逻辑的实际后端REST API请求。

Spring也有一个包含一些OAuth2功能的库,您可能需要研究一下。 https://projects.spring.io/spring-security-oauth/docs/oauth2.html 检查描述OAuth 2.0客户端的部分。似乎表明RestTemplate有一些扩展,可以添加正确的标题。

我个人通常只是自己管理令牌,并在构建RestTemplate的请求时将其添加到标头中。

答案 1 :(得分:1)

对于计划作业/后台作业,如果用户当前未登录,请使用 [离线令牌] [1]。

您需要创建用户以供系统使用并分配了offline_access角色。 然后生成离线令牌,并将其存储在数据库之类的数据存储中。

在控制台应用程序中,使用脱机令牌生成访问令牌并将其用作承载令牌,以访问后端rest api。

http://blog.keycloak.org/2015/12/offline-tokens-in-keycloak.html