여기서 3 줄의 코드 라인은 실제로 3 줄의 코드 만 작성하면되지 않지만 Spring Boot OAUTH2 서비스를 기반으로 작성했습니다. Spring Boot OAUTH2 서비스를 얻으려면 3 줄의 데이터베이스 구성 정보 만 수정하면됩니다.
프로젝트 주소 https://github.com/jeesun/oauthserver
Oauthserver
소개
Oauthserver는 Spring Boot OAUTH2를 기반으로 한 완전한 독립형 OAUTH 서버입니다. 관련 데이터 테이블을 작성하고 데이터베이스의 연결 정보를 수정하면 OAUTH 서버를 얻을 수 있습니다.
지원되는 관계형 데이터베이스 :
구현 된 기능 :
사용 프로세스
1. 테이블을 만듭니다
Postgresql
데이터 테이블 작성을 완료하고 테스트 데이터를 가져 오려면 SRC/Main/Resources/Schema-PG.SQL을 실행하십시오.
MySQL
데이터 테이블 생성 및 테스트 데이터 가져 오기를 완료하려면 SRC/Main/Resources/Schema-MysQL.SQL을 실행하십시오.
2. 데이터베이스 연결 정보를 수정합니다
application.yml에서 데이터베이스의 연결 정보가 구성됩니다. 그중에서도 구성 항목 사용자 이름과 비밀번호는 Jasypt에 의해 암호화되어야하며 직접 채울 수 없습니다. 암호화 키는 jasypt.encryptor.password에 의해 구성됩니다. 암호화 된 문자열을 얻으려면 테스트 디렉토리의 utiltests 도구를 사용해야합니다.
Postgresql# postgresql 연결 정보 드라이버 클래스-이름 : org.postgresql.driver url : jdbc : postgresql : //127.0.0.1 : 5432/themelte? useunicode = true & characterencoding = utf-8 username : etc (htpbg9fqur) ENC (ABDQ6LYOSPRYFQHCQZEMTXROZYJVJIA4) MYSQL# MYSQL 연결 정보 DRIVER-CLASS-NAME : COM.MYSQL.JDBC.DRIVER URL : JDBC : MYSQL : //127.0.0.1 : 3306/TRUE & CATURE ENCODE = UTF-8 & useSENTEN : enc (yiyjvwtuldgn // yab3kbua ==) 비밀번호 : Enc (9oaijkfgggsdfahh3oxy63rhwq+amdmij)
3. 실행
이제 모든 것이 준비되었습니다. 프로젝트를 실행하십시오. 프로그램이 성공적으로 시작되면 성공적으로 구성했음을 의미합니다.
4. 테스트
테이블을 만들 때 테스트 데이터를 테이블에 추가했습니다. 다음 요청 매개 변수의 값은 모두 테스트 데이터이며 데이터 테이블에서 찾을 수 있습니다. 요구 사항에 따라 해당 값을 수정하려면 데이터 테이블로 이동하십시오.
표 OAUTH_CLIENT_DETAILS 테이블에는 이미 테스트 데이터가 있습니다. client_id 및 client_secret 열의 값은 각각 기본 OAUTH 요청 매개 변수 사용자 이름과 비밀번호의 값에 해당합니다. access_token_validity 및 column refresh_token_validity 열은 각각 몇 초 만에 Access_Token 및 Rompher_Token의 유효 기간을 나타냅니다. 테스트 데이터 7200 및 5184000은 각각 2 시간 및 2 개월 (60 일)을 나타냅니다. 이것은 비교적 합리적인 타당성 시간 설정으로 참조로 사용할 수 있습니다.
관련 토큰과 관련된 모든 인터페이스에는 기본 OAuth 인증이 필요합니다.
1. 사용자 이름과 비밀번호에 따라 Access_Token을 얻습니다
post http : // localhost : 8182/oauth/token? grant_type = password & username = jeesun & password = 1234567890c
Successful example:
{ "Access_Token": "CA582CD1-BE6C-4A5A-82EC-10AF7A8E06EB", "TOKEN_TYPE": "Bearer", "Crophtomes_Token": "C24A6143-97C8-4642-88B9-D5C5B902B487", "3824,": "38247" "스코프": "신뢰도 읽기"}실패 예제 (잘못된 사용자 이름 또는 비밀번호)
{ "error": "invalid_grant", "error_description": "나쁜 자격 증명"}}2. access_token을 확인하십시오
http : // localhost : 8182/oauth/check_token? token = ca582cd1-be6c-4a5a-82ec-10af7a8e06eb를 얻으십시오
성공적인 예
{ "aud": [ "Oauth2-Resource"], "exp": 1524507296, "user_name": "jeesun", "당국": [ "role_admin", "role_user"], "client_id": "clientIdpassword": "읽기", "신뢰" "}}}}.실패 예제 (Access_Token 만료)
{ "error": "invalid_token", "error_description": "토큰이 인식되지 않았다"}}3. Crophromes_Token에 따라 새로운 Access_Token을 얻으십시오
post http : // localhost : 8182/oauth/token? grant_type = refresh_token & refresh_token = c24a6143-97c8-4642-88b9-d5c5b902b487
성공적인 예
{ "access_token": "690ecd7d-f2b7-4faa-ac45-5b7a319478e8", "token_type": "bearer", "refresh_token": "c24a6143-97c8-4642-88b9-d5c5b902b487", ",", ", elpires _,": ",": " "스코프": "신뢰도 읽기"}앱 연습 안내서
앱이 토큰 정보를 얻은 후에는 토큰 정보와 요청 시간을 저장해야합니다. Access_Token을 통과하기 전에 Access_Token이 만료되는지 확인해야합니다. 배경 압력을 줄이려면 access_token 만료가 앱에서 로컬로 수행되어야하는지 확인해야합니다. 로컬 레코드 요청 시간뿐만 아니라 토큰의 keyexpires_in (남은 유효 기간) 값과 현재 시간을 비교하면 Access_Token이 만료되었는지 여부를 쉽게 결정할 수 있습니다. 만료되면 Compert_Token을 통해 새로운 Access_Token을 얻어야합니다. Access_Token의 유효 기간은 2 시간에 불과하기 때문에이 검증이 필요합니다. refresh_token도 마찬가지입니다.
요약
위는 Spring Boot OAUTH2 서비스를 신속하게 구현하기 위해 편집기가 소개 한 3 줄의 코드입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!