keycloak 使用 postman 获取 token 信息

本文详细介绍了如何通过POST请求调用身份验证API,包括请求的URL、参数设置及所需携带的用户凭证信息。

在这里插入图片描述

1.post 请求
2.地址 http://ip:端口/auth/realms/域名/protocol/openid-connect/token
3.请求参数选择body 选择 x-www-form-urlencoder
4.参数 
grant_type  password
client_id admin-cli
username 你的用户名
password 你的密码
在Spring Boot应用中对接Keycloak,通常需要将Spring Boot应用配置为Keycloak的客户端,以便实现身份验证、授权等功能。Keycloak是一个开源的身份和访问管理解决方案,支持OAuth2、OpenID Connect等协议。 下面是一个完整的示例,展示如何将Spring Boot应用与Keycloak集成。 --- ### 1. 添加Maven依赖 首先在你的 `pom.xml` 文件中添加 Keycloak Spring Boot Starter 的依赖: ```xml <dependency> <groupId>org.keycloak</groupId> <artifactId>keycloak-spring-boot-starter</artifactId> <version>22.0.1</version> <!-- 请根据你的Keycloak版本调整 --> </dependency> ``` --- ### 2. 配置 `application.yml` 在 `application.yml` 中配置 Keycloak 的相关信息: ```yaml keycloak: enabled: true realm: your-realm-name auth-server-url: http://localhost:8080/auth ssl-required: external resource: your-client-id credentials: secret: your-client-secret use-resource-role-mappings: true bearer-only: true ``` - `realm`: Keycloak 中的 Realm 名称 - `auth-server-url`: Keycloak 服务器地址 - `resource`: Spring Boot 应用在 Keycloak 中注册的客户端 ID - `credentials.secret`: 客户端的 Secret(如果客户端启用的是“密钥”认证方式) - `bearer-only`: 表示这是一个 bearer token 验证的服务端,不参与登录流程(适用于 REST API) --- ### 3. 配置安全策略(可选) 如果你需要对访问接口进行权限控制,可以自定义安全配置: ```java import org.keycloak.adapters.springsecurity.KeycloakSecurityComponents; import org.keycloak.adapters.springsecurity.authentication.KeycloakAuthenticationProvider; import org.keycloak.adapters.springsecurity.config.KeycloakWebSecurityConfigurerAdapter; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.core.authority.mapping.GrantedAuthoritiesMapper; import org.springframework.security.core.authority.mapping.SimpleAuthorityMapper; import org.springframework.security.web.authentication.session.NullAuthenticatedSessionStrategy; import org.springframework.security.web.authentication.session.SessionAuthenticationStrategy; @Configuration public class KeycloakConfig extends KeycloakWebSecurityConfigurerAdapter { @Autowired public void configureGlobal(AuthenticationManagerBuilder auth) { KeycloakAuthenticationProvider keycloakAuthenticationProvider = keycloakAuthenticationProvider(); keycloakAuthenticationProvider.setGrantedAuthoritiesMapper(grantedAuthoritiesMapper()); auth.authenticationProvider(keycloakAuthenticationProvider); } @Bean @Override protected SessionAuthenticationStrategy sessionAuthenticationStrategy() { return new NullAuthenticatedSessionStrategy(); } @Override protected void configure(HttpSecurity http) throws Exception { super.configure(http); http .authorizeRequests() .antMatchers("/api/public").permitAll() .antMatchers("/api/secured").authenticated() .antMatchers("/api/admin").hasRole("admin") .and() .keycloak(); } @Bean public GrantedAuthoritiesMapper grantedAuthoritiesMapper() { SimpleAuthorityMapper authorityMapper = new SimpleAuthorityMapper(); authorityMapper.setPrefix("ROLE_"); return authorityMapper; } } ``` --- ### 4. 创建测试接口 创建一些测试接口来验证 Keycloak 的认证和授权功能: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api") public class TestController { @GetMapping("/public") public String publicEndpoint() { return "This is a public endpoint."; } @GetMapping("/secured") public String securedEndpoint() { return "This is a secured endpoint."; } @GetMapping("/admin") public String adminEndpoint() { return "This is an admin endpoint."; } } ``` --- ### 5. 启动 Keycloak 服务 你可以使用 Docker 快速启动 Keycloak: ```bash docker run -p 8080:8080 \ -e KEYCLOAK_ADMIN=admin \ -e KEYCLOAK_ADMIN_PASSWORD=admin \ quay.io/keycloak/keycloak:22.0.1 \ start-dev ``` 然后访问 `http://localhost:8080`,使用管理员账号登录并创建 Realm、客户端、用户和角色。 --- ### 6. 获取 Token 并访问接口 使用 Postman 或 curl 获取 Token: ```bash curl -X POST http://localhost:8080/auth/realms/your-realm-name/protocol/openid-connect/token \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "username=your-username" \ -d "password=your-password" \ -d "grant_type=password" \ -d "client_id=your-client-id" \ -d "client_secret=your-client-secret" ``` 拿到 `access_token` 后,在请求头中添加: ``` Authorization: Bearer <your-access-token> ``` 然后访问 `/api/secured` 或 `/api/admin` 接口。 --- ### 总结 以上步骤展示了如何在 Spring Boot 应用中集成 Keycloak,实现基于 OAuth2 / OpenID Connect 的认证和授权。主要流程包括: 1. 引入 Keycloak 的依赖 2. 配置 Keycloak 的连接参数 3. 配置 Spring Security 的权限控制 4. 创建受保护的接口 5. 使用 Keycloak 获取 Token 并访问接口 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值