我试图通过查询/tokenendpoint从另一个应用程序中检索spring boot应用程序中的azure JWT访问令牌,但我收到的令牌似乎不正确。
该项目有一个spring boot后端和一个Eclipse rcp前端。我正在尝试从eclipse前端检索访问令牌。对此,我有下面的控制器:
@Autowired
private OAuth2AuthorizedClientService authorizedClientService;
@GetMapping("/token")
public String user(OAuth2AuthenticationToken authentication) {
OAuth2AuthorizedClient authorizedClient = this.authorizedClientService
.loadAuthorizedClient(authentication.getAuthorizedClientRegistrationId(), authentication.getName());
return authorizedClient.getAccessToken().getTokenValue();
}
返回具有以下格式的令牌:
PAQABAAAAAABeAFzDwllzTYGDLh_qYbH8hgtbYMB8x7YLamQyQPk_MEXyd9Ckc5epDFQMv3RxjmMie0JDr5uN82U4RFLgU3fnDBxGolo4XVwzLEsTZDmUK_r0YG6ZwLbbQI_ch_Xn8xCxhsFq-AoRbEESDqK3GmK4eXwCYoT0G8_XfZjHTvCNTOMqUb2Q-CD2EalIKf0zSZ5184qrvlXfdNeT_BJdH_tqaodn80Bp2UL2hdnOCDZuWRqKl_2fi4v-eOOKJCcjOqY6SreVEeoKkIvVdayGE8F6qCxFehmlA0sX9sVW34FIVYVo4lDRsTkm-WN2KJwxJmalNcxg0k2ObDnIeC1ulPPpiPq-O_LK9bVA4HEZ63cJi9ZwQHwLPUhOO6TquoCOroHSy5KPoFkX3N796hM1i0NpaaY4MeAx17CSYeZ9P06jvYD7UMTV3OwWt-OVrDm5z_AvbOvyHRf9wjh31H6oLoc-iu_NCspT6NzC2UZQSHBtKdydEcP6sNkRp073jrZEg8UtcVT6HzddIBk2P0tVeIiSyU3SfLETbzJE67xtJVip3ai9aLN28c0qt3rDBaVGDAXjXhqrh5D3NiXdQjS6YTAKy0bVmNk9Yr9o2CGBA2wFjE8OZ6_Hb3k8_13KMJHafx0gAA
使用具有以下相关依赖关系的spring boot构建:
spring-boot-starter-web
v2.2.4Azure-Active-Directory-spring-boot-starter
V2.2.1Spring-Security-Oauth2-Client
v5.2.1Spring-Security-Oauth2-Jose
v5.2.1Spring-Security-Oauth2-Resource-Server
V5.2.1我们支持多个授权服务器,这里是完全配置的azure客户端:
spring:
security:
oauth2:
client:
azure:
client-id: XXX
client-secret: XXX
client-name: Microsoft
scope: openid, https://graph.microsoft.com/user.read, profile
authorization-grant-type: authorization_code
redirect-uri: http://localhost:8080/login/oauth2/code/azure
client-authentication-method: basic
authentication-method: post
provider:
authorization-uri: https://login.microsoftonline.com/XXX/oauth2/authorize
token-uri: https://login.microsoftonline.com/XXX/oauth2/token
user-info-uri: https://login.microsoftonline.com/XXX/openid/userinfo
jwt-set-uri: https://login.microsoftonline.com/dXXX/discovery/keys
azure:
activedirectory:
tenant-id: XXX
active-directory-groups: XXX
allow-telemetry: false
@Configuration
@EnableConfigurationProperties
@EnableWebSecurity
@Order(1)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private OAuth2UserService<OidcUserRequest, OidcUser> oidcUserService;
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
[...]
.anyRequest().authenticated();
http.oauth2ResourceServer(OAuth2ResourceServerConfigurer::jwt)
http.oauth2Login()
.userInfoEndpoint()
.oidcUserService(oidcUserService)
.and()
.authorizationEndpoint();
}
[...]
}
这就是我最终从Azure获得open id令牌的方式
@GetMapping("/token")
public String user(OAuth2AuthenticationToken authentication) {
DefaultOidcUser user = (DefaultOidcUser) authentication.getPrincipal();
return user.getIdToken().getTokenValue();
}
我试图使用以下所需信息从API生成访问令牌: 授权endpoint:https://api.paylocity.com/identityserver/connect/token 其他值请求必须在请求正文中发布以下表单编码值: grant_type=client_credentials范围=WebLinkAPI 我尝试使用Python'requests'包,但没有成功,请参见下面: 我已经验证了我的
我试图允许用户通过谷歌API的帮助通过gmail登录。我可以登录,也可以检索个人信息,但不能检索,刷新和访问令牌,这是在成功登录的用户生成。因为我需要将详细信息发送到服务器,所以我如何检索它。 提前谢了。
我无法从Spotify获得Android应用的访问令牌,因为我可以连接到endpoint。 我需要我的Android应用程序的访问令牌,我尝试了以下方法:1)Spotify Android auth library。我找不到spotify auth版本。他们谈论的aar。2) 手动生成url。下面是一个例子: 当我尝试连接时,我得到了各种可能的错误:“缺少所需的参数:client_id”、“INV
我正在尝试获取Spotify API访问令牌。根据Spotify API站点的这些说明: 请求将包括请求正文中的参数: null null 生成: 我正试图在这样的球拍中实现这一点: http.rkt 这很奇怪,因为它告诉我,即使我的grant_type是client_credentials(请参见当我调用on)时,我的grant_type不受支持。是什么导致了这一切?
我已经做了大约一个星期了。 我有一个用例,我通过主体而不是标题接收身份验证令牌,并且由于keybeapt和Spring不会自动设置用户。(原因是,对于WebSocket,我只能通过具有初始连接的主体发送身份验证令牌) 我尝试在keycloak之前拦截调用并将令牌从正文复制到标头,但这不起作用。 所以现在我想通过keydepeat手动进行身份验证(或者只是手动设置主要用户)。我可以访问JWT访问令牌
下面是security.xml文件,我正在使用它合并spring-security-oauth2。 我必须在spring-security.xml文件中做哪些更改,以便在JSON中发送查询参数?