12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- /*
- * Copyright 2002-2019 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package sample;
- import java.security.KeyFactory;
- import java.security.interfaces.RSAPublicKey;
- import java.security.spec.X509EncodedKeySpec;
- import java.util.Base64;
- import org.springframework.context.annotation.Bean;
- import org.springframework.security.config.annotation.web.builders.HttpSecurity;
- import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
- import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
- import org.springframework.security.oauth2.jwt.JwtDecoder;
- import org.springframework.security.oauth2.jwt.NimbusJwtDecoder;
- /**
- * @author Josh Cummings
- */
- @EnableWebSecurity
- public class OAuth2ResourceServerSecurityConfiguration extends WebSecurityConfigurerAdapter {
- @Override
- protected void configure(HttpSecurity http) throws Exception {
- // @formatter:off
- http
- .authorizeRequests()
- .antMatchers("/message/**").hasAuthority("SCOPE_message:read")
- .anyRequest().authenticated()
- .and()
- .oauth2ResourceServer()
- .jwt()
- .decoder(jwtDecoder());
- // @formatter:on
- }
- @Bean
- JwtDecoder jwtDecoder() throws Exception {
- return NimbusJwtDecoder.withPublicKey(key()).build();
- }
- private RSAPublicKey key() throws Exception {
- String encoded = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDdlatRjRjogo3WojgGHFHYLugd" +
- "UWAY9iR3fy4arWNA1KoS8kVw33cJibXr8bvwUAUparCwlvdbH6dvEOfou0/gCFQs" +
- "HUfQrSDv+MuSUMAe8jzKE4qW+jK+xQU9a03GUnKHkkle+Q0pX/g6jXZ7r1/xAK5D" +
- "o2kQ+X5xK9cipRgEKwIDAQAB";
- byte[] bytes = Base64.getDecoder().decode(encoded.getBytes());
- return (RSAPublicKey) KeyFactory.getInstance("RSA")
- .generatePublic(new X509EncodedKeySpec(bytes));
- }
- }
|