org.springframework.security.oauth2.client.userinfo.OAuth2UserService Java Examples
The following examples show how to use
org.springframework.security.oauth2.client.userinfo.OAuth2UserService.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: DemoApplicationTests.java From keycloak-springsecurity5-sample with GNU General Public License v3.0 | 7 votes |
private OAuth2UserService<OAuth2UserRequest, OAuth2User> mockUserService() { Map<String, Object> attributes = new HashMap<>(); attributes.put("id", "joeg"); attributes.put("first-name", "Joe"); attributes.put("last-name", "Grandja"); attributes.put("email", "[email protected]"); GrantedAuthority authority = new OAuth2UserAuthority(attributes); Set<GrantedAuthority> authorities = new HashSet<>(); authorities.add(authority); DefaultOAuth2User user = new DefaultOAuth2User(authorities, attributes, "email"); OAuth2UserService userService = mock(OAuth2UserService.class); when(userService.loadUser(any())).thenReturn(user); return userService; }
Example #2
Source File: OidcUserManagementAutoConfiguration.java From hawkbit with Eclipse Public License 1.0 | 5 votes |
/** * @return the oauth2 user details service to load a user from oidc user * manager */ @Bean @ConditionalOnMissingBean public OAuth2UserService<OidcUserRequest, OidcUser> oidcUserDetailsService( final JwtAuthoritiesExtractor extractor) { return new JwtAuthoritiesOidcUserService(extractor); }
Example #3
Source File: SecurityConfig.java From oauth2-client with MIT License | 4 votes |
/** * 从access_token中直接抽取角色等信息 * https://docs.spring.io/spring-security/site/docs/current/reference/htmlsingle/#oauth2login-advanced-map-authorities-oauth2userservice * * @return */ @SuppressWarnings("unchecked") @Bean public OAuth2UserService<OAuth2UserRequest, OAuth2User> oauth2UserService() { return (userRequest) -> { String userNameAttributeName = userRequest.getClientRegistration().getProviderDetails().getUserInfoEndpoint().getUserNameAttributeName(); if (!StringUtils.hasText(userNameAttributeName)) { userNameAttributeName = "sub"; } OAuth2AccessToken accessToken = userRequest.getAccessToken(); Collection<GrantedAuthority> grantedAuthorities = new ArrayList<>(); try { SignedJWT jwt = SignedJWT.parse(accessToken.getTokenValue()); String claimJsonString = jwt.getJWTClaimsSet().toJSONObject().toJSONString(); Object document = com.jayway.jsonpath.Configuration.defaultConfiguration().jsonProvider().parse(claimJsonString); List<Object> authorities = JsonPath.using(conf).parse(document).read("$..roles"); if (authorities == null || authorities.size() == 0) { authorities = JsonPath.using(conf).parse(document).read("$..authorities"); } Collection<String> roles = new ArrayList<>(); authorities.forEach(authorityItem -> { if (authorityItem instanceof String) { roles.add((String) authorityItem); } else if (authorityItem instanceof JSONArray) { roles.addAll((Collection<String>) authorityItem); } else if (authorityItem instanceof Collection) { roles.addAll((Collection<String>) authorityItem); } }); for (String authority : roles) { grantedAuthorities.add(new SimpleGrantedAuthority(authority)); } Map<String, Object> userAttributes = new HashMap<>(16); userAttributes.put(userNameAttributeName, JsonPath.using(conf).parse(document).read("$." + userNameAttributeName)); userAttributes.put("preferred_username", JsonPath.using(conf).parse(document).read("$.preferred_username")); userAttributes.put("email", JsonPath.using(conf).parse(document).read("$.email")); OAuth2User oAuth2User = new DefaultOAuth2User(grantedAuthorities, userAttributes, userNameAttributeName); return oAuth2User; } catch (Exception e) { log.error("oauth2UserService Exception", e); } return null; }; }