Spring boot + Spring Security 5 + OAuth2/OIDC 클라이언트 - 기초
10376 단어 springbootoauth2springsecurityjava
이 예에서는 보호된 끝점에 액세스하려고 할 때 Google로 리디렉션되는 간단한 앱을 빌드할 것입니다.
1 단계:
다음 종속성을 사용하여 https://start.spring.io에서 스프링 부트 프로젝트를 생성합니다.
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
implementation 'org.jetbrains.kotlin:kotlin-reflect'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}
2 단계:
현재 사용자의 인증 데이터를 표시할 엔드포인트 생성
@RestController
class HelloController {
@GetMapping("/me")
fun hello(currentUser: OAuth2AuthenticationToken): ResponseEntity<OAuth2AuthenticationToken> {
return ResponseEntity.ok(currentUser)
}
}
3단계:
application.yml에서 OAuth2 클라이언트 정보를 구성합니다. Google의 개발자 콘솔에서 앱의 리디렉션 URI를 http://localhost:8080/login/oauth2/code/google
로 구성합니다.
# @see https://console.developers.google.com/apis/ to create your client credentials
logging.level.org.springframework: INFO
spring:
security:
oauth2:
client:
registration:
google:
provider: google
client-id: <<your-client-id>>
client-secret: <<your-client-secret>>
client-authentication-method: basic
authorization-grant-type: authorization_code
scope:
- openid
- email
- profile
- https://www.googleapis.com/auth/tasks.readonly
provider:
google:
issuer-uri: https://accounts.google.com
4단계:
응용 프로그램을 실행하고 gotohttp://localhost:8080/me로 이동하여 로그인 프로세스를 완료하면 다음과 같이 표시됩니다.
{
"authorities": [
{
"authority": "ROLE_USER",
"attributes": {
"at_hash": "28AV0o6xKM8f3UQlljlGuw",
"sub": "10080000000000000",
"email_verified": true,
"iss": "https://accounts.google.com",
"given_name": "Syamala",
"locale": "en",
"picture": "https://lh6.googleusercontent.com/photo.jpg",
"aud": [
"client-id"
],
"azp": "client-id",
"name": "Syamala Umamaheswaran",
"exp": "2019-03-24T18:27:19Z",
"family_name": "Umamaheswaran",
"iat": "2019-03-24T17:27:19Z",
"email": "[email protected]"
},
"idToken": {...},
"userInfo": null
}
],
"details": null,
"authenticated": true,
"principal": {},
"authorizedClientRegistrationId": "google",
"credentials": "",
"name": "10080000000000000"
}
마음을 날려:
보안을 위한 코드를 작성하지 않고도 OpenID Connect 제공업체와 통합할 수 있다는 사실에 충격을 받았지만 이것이 어떻게 그렇게 쉽게 작동하는지 알아야 했습니다. 악마는 세부 사항에 있습니다. 비하인드 씬과 보호된 리소스에 액세스하는 방법 및 토큰을 자동으로 새로 고치는 방법을 설명하는 내 위치를 계속 지켜봐 주십시오.
전체 소스 코드 @https://github.com/shyamz-22/oidc-spring-security-5
Reference
이 문제에 관하여(Spring boot + Spring Security 5 + OAuth2/OIDC 클라이언트 - 기초), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/shyamala_u/spring-boot--spring-security-5--oauth2oidc-client---basics-4ibo
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-oauth2-client'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
implementation 'org.jetbrains.kotlin:kotlin-reflect'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testImplementation 'org.springframework.security:spring-security-test'
}
현재 사용자의 인증 데이터를 표시할 엔드포인트 생성
@RestController
class HelloController {
@GetMapping("/me")
fun hello(currentUser: OAuth2AuthenticationToken): ResponseEntity<OAuth2AuthenticationToken> {
return ResponseEntity.ok(currentUser)
}
}
3단계:
application.yml에서 OAuth2 클라이언트 정보를 구성합니다. Google의 개발자 콘솔에서 앱의 리디렉션 URI를 http://localhost:8080/login/oauth2/code/google
로 구성합니다.
# @see https://console.developers.google.com/apis/ to create your client credentials
logging.level.org.springframework: INFO
spring:
security:
oauth2:
client:
registration:
google:
provider: google
client-id: <<your-client-id>>
client-secret: <<your-client-secret>>
client-authentication-method: basic
authorization-grant-type: authorization_code
scope:
- openid
- email
- profile
- https://www.googleapis.com/auth/tasks.readonly
provider:
google:
issuer-uri: https://accounts.google.com
4단계:
응용 프로그램을 실행하고 gotohttp://localhost:8080/me로 이동하여 로그인 프로세스를 완료하면 다음과 같이 표시됩니다.
{
"authorities": [
{
"authority": "ROLE_USER",
"attributes": {
"at_hash": "28AV0o6xKM8f3UQlljlGuw",
"sub": "10080000000000000",
"email_verified": true,
"iss": "https://accounts.google.com",
"given_name": "Syamala",
"locale": "en",
"picture": "https://lh6.googleusercontent.com/photo.jpg",
"aud": [
"client-id"
],
"azp": "client-id",
"name": "Syamala Umamaheswaran",
"exp": "2019-03-24T18:27:19Z",
"family_name": "Umamaheswaran",
"iat": "2019-03-24T17:27:19Z",
"email": "[email protected]"
},
"idToken": {...},
"userInfo": null
}
],
"details": null,
"authenticated": true,
"principal": {},
"authorizedClientRegistrationId": "google",
"credentials": "",
"name": "10080000000000000"
}
마음을 날려:
보안을 위한 코드를 작성하지 않고도 OpenID Connect 제공업체와 통합할 수 있다는 사실에 충격을 받았지만 이것이 어떻게 그렇게 쉽게 작동하는지 알아야 했습니다. 악마는 세부 사항에 있습니다. 비하인드 씬과 보호된 리소스에 액세스하는 방법 및 토큰을 자동으로 새로 고치는 방법을 설명하는 내 위치를 계속 지켜봐 주십시오.
전체 소스 코드 @https://github.com/shyamz-22/oidc-spring-security-5
Reference
이 문제에 관하여(Spring boot + Spring Security 5 + OAuth2/OIDC 클라이언트 - 기초), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/shyamala_u/spring-boot--spring-security-5--oauth2oidc-client---basics-4ibo
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# @see https://console.developers.google.com/apis/ to create your client credentials
logging.level.org.springframework: INFO
spring:
security:
oauth2:
client:
registration:
google:
provider: google
client-id: <<your-client-id>>
client-secret: <<your-client-secret>>
client-authentication-method: basic
authorization-grant-type: authorization_code
scope:
- openid
- email
- profile
- https://www.googleapis.com/auth/tasks.readonly
provider:
google:
issuer-uri: https://accounts.google.com
응용 프로그램을 실행하고 gotohttp://localhost:8080/me로 이동하여 로그인 프로세스를 완료하면 다음과 같이 표시됩니다.
{
"authorities": [
{
"authority": "ROLE_USER",
"attributes": {
"at_hash": "28AV0o6xKM8f3UQlljlGuw",
"sub": "10080000000000000",
"email_verified": true,
"iss": "https://accounts.google.com",
"given_name": "Syamala",
"locale": "en",
"picture": "https://lh6.googleusercontent.com/photo.jpg",
"aud": [
"client-id"
],
"azp": "client-id",
"name": "Syamala Umamaheswaran",
"exp": "2019-03-24T18:27:19Z",
"family_name": "Umamaheswaran",
"iat": "2019-03-24T17:27:19Z",
"email": "[email protected]"
},
"idToken": {...},
"userInfo": null
}
],
"details": null,
"authenticated": true,
"principal": {},
"authorizedClientRegistrationId": "google",
"credentials": "",
"name": "10080000000000000"
}
마음을 날려:
보안을 위한 코드를 작성하지 않고도 OpenID Connect 제공업체와 통합할 수 있다는 사실에 충격을 받았지만 이것이 어떻게 그렇게 쉽게 작동하는지 알아야 했습니다. 악마는 세부 사항에 있습니다. 비하인드 씬과 보호된 리소스에 액세스하는 방법 및 토큰을 자동으로 새로 고치는 방법을 설명하는 내 위치를 계속 지켜봐 주십시오.
전체 소스 코드 @https://github.com/shyamz-22/oidc-spring-security-5
Reference
이 문제에 관하여(Spring boot + Spring Security 5 + OAuth2/OIDC 클라이언트 - 기초), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/shyamala_u/spring-boot--spring-security-5--oauth2oidc-client---basics-4ibo
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Spring boot + Spring Security 5 + OAuth2/OIDC 클라이언트 - 기초), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/shyamala_u/spring-boot--spring-security-5--oauth2oidc-client---basics-4ibo텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)