如何在普通 Java 控制台应用程序中获取令牌?
How do I get a token in a plain Java console application?
我使用 keycloak 来保护 angular 前端针对 spring 引导后端的登录。到目前为止效果很好。为此,我使用隐式流程和 angular-oauth2-oidc.
现在回答我的问题:我有第三个应用程序,它是一个普通的 java 控制台应用程序(没有用户交互的批处理作业)。此应用程序还应该能够与后端 rest api 通信,但使用固定令牌或通过 username/password.
如何在控制台应用程序中获取不记名令牌?有API和例子吗?
如何使用您在 angular 应用程序中使用的相同方法来请求令牌,但使用 Spring 的 RestTemplate
?
因此,首先您通过调用身份验证服务获取令牌,然后在成功获取令牌后,将其作为 Authorization: Bearer <token>
添加到您的 header 中,并随后向实际后端 REST API 做业务逻辑。
Spring 也有一个带有一些 OAuth2 功能的库,您可能想研究一下。
https://projects.spring.io/spring-security-oauth/docs/oauth2.html
检查描述 OAuth 2.0 客户端的部分。它似乎表明 RestTemplate
有一些扩展以添加正确的 headers.
就我个人而言,我通常只是自己管理令牌并将其添加到 header,因为我为 RestTemplate
构建请求。
对于计划 jobs/background 作业,用户当前未登录,您使用
[离线代币][1].
您需要为系统使用创建用户并分配 offline_access 角色。
然后生成离线令牌并将其存储在数据库等数据存储中。
在您的控制台应用程序中,使用离线令牌生成访问令牌并将其用作承载令牌以访问后端 rest api。
http://blog.keycloak.org/2015/12/offline-tokens-in-keycloak.html
我使用 keycloak 来保护 angular 前端针对 spring 引导后端的登录。到目前为止效果很好。为此,我使用隐式流程和 angular-oauth2-oidc.
现在回答我的问题:我有第三个应用程序,它是一个普通的 java 控制台应用程序(没有用户交互的批处理作业)。此应用程序还应该能够与后端 rest api 通信,但使用固定令牌或通过 username/password.
如何在控制台应用程序中获取不记名令牌?有API和例子吗?
如何使用您在 angular 应用程序中使用的相同方法来请求令牌,但使用 Spring 的 RestTemplate
?
因此,首先您通过调用身份验证服务获取令牌,然后在成功获取令牌后,将其作为 Authorization: Bearer <token>
添加到您的 header 中,并随后向实际后端 REST API 做业务逻辑。
Spring 也有一个带有一些 OAuth2 功能的库,您可能想研究一下。
https://projects.spring.io/spring-security-oauth/docs/oauth2.html
检查描述 OAuth 2.0 客户端的部分。它似乎表明 RestTemplate
有一些扩展以添加正确的 headers.
就我个人而言,我通常只是自己管理令牌并将其添加到 header,因为我为 RestTemplate
构建请求。
对于计划 jobs/background 作业,用户当前未登录,您使用 [离线代币][1].
您需要为系统使用创建用户并分配 offline_access 角色。 然后生成离线令牌并将其存储在数据库等数据存储中。
在您的控制台应用程序中,使用离线令牌生成访问令牌并将其用作承载令牌以访问后端 rest api。
http://blog.keycloak.org/2015/12/offline-tokens-in-keycloak.html