รหัส 3 บรรทัดที่นี่ไม่ได้หมายความว่าคุณต้องเขียนรหัส 3 บรรทัดเท่านั้น แต่ขึ้นอยู่กับบริการสปริง OAuth2 ที่ฉันเขียนไว้ คุณจะต้องแก้ไขข้อมูลการกำหนดค่าฐานข้อมูล 3 บรรทัดเพื่อรับบริการ Spring Boot OAuth2
ที่อยู่โครงการ https://github.com/jeesun/oauthserver
oauthserver
การแนะนำ
Oauthserver เป็นเซิร์ฟเวอร์ Oauth แบบสแตนด์อโลนที่สมบูรณ์โดยใช้ Spring Boot OAuth2 เพียงสร้างตารางข้อมูลที่เกี่ยวข้องและแก้ไขข้อมูลการเชื่อมต่อของฐานข้อมูลและคุณสามารถรับเซิร์ฟเวอร์ 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 ข้อมูลการเชื่อมต่อไดรเวอร์ -lass-name: org.postgresql.driver url: jdbc: postgreSql: //127.0.0.1: 5432/thymelte ENC (ABDQ6LYOSPRYFQHCQZEMTXROZYJVJIA4) mySQL# mysql การเชื่อมต่อข้อมูลไดรเวอร์-ชื่อ: com.mysql.jdbc.driver url: jdbc: mysql: //127.0.0.1: 3306/ทดสอบ enc (yiyjvwtuldgn // yab3kbua ==) รหัสผ่าน: Enc (9oaijkfggsdfahh3oxy63rhwq+amdmij)
3. วิ่ง
ตอนนี้ทุกอย่างพร้อมแล้ว เรียกใช้โครงการ เมื่อโปรแกรมเริ่มสำเร็จหมายความว่าคุณได้กำหนดค่าให้สำเร็จแล้ว
4. ทดสอบ
ฉันได้เพิ่มข้อมูลทดสอบลงในตารางเมื่อสร้างตาราง ค่าของพารามิเตอร์คำขอต่อไปนี้เป็นข้อมูลการทดสอบทั้งหมดและสามารถพบได้ในตารางข้อมูล โปรดไปที่ตารางข้อมูลเพื่อแก้ไขค่าที่เกี่ยวข้องตามความต้องการของคุณ
ในตารางตาราง OAUTH_Client_Details มีข้อมูลการทดสอบอยู่แล้ว ค่าของคอลัมน์ client_id และ client_secret สอดคล้องกับค่าของพารามิเตอร์การร้องขอ OAUTH พื้นฐานและรหัสผ่านตามลำดับ คอลัมน์ access_token_validity และคอลัมน์ refresh_token_validity แสดงถึงระยะเวลาความถูกต้องของ access_token และ refresh_token ตามลำดับในไม่กี่วินาที ข้อมูลทดสอบ 7200 และ 5184000 แสดง 2 ชั่วโมง 2 เดือน (60 วัน) ตามลำดับ นี่คือการตั้งค่าเวลาที่เหมาะสมที่สมเหตุสมผลซึ่งสามารถใช้เป็นข้อมูลอ้างอิงได้
อินเทอร์เฟซทั้งหมดที่เกี่ยวข้องกับโทเค็นต้องการการตรวจสอบความถูกต้อง OAuth ขั้นพื้นฐาน
1. รับ access_token ตามชื่อผู้ใช้และรหัสผ่าน
โพสต์ http: // localhost: 8182/oauth/token? gant_type = รหัสผ่าน & ชื่อผู้ใช้ = Jeesun & รหัสผ่าน = 1234567890C
ตัวอย่างที่ประสบความสำเร็จ:
{"Access_Token": "CA582CD1-BE6C-4A5A-82EC-10AF7A8E06EB", "TOKEN_TYPE": "Bearer", "Refresh_Token": "C24A6143-97C8-4642-88B9-D5B902B902 "ขอบเขต": "อ่านเขียนความน่าเชื่อถือ"}ตัวอย่างความล้มเหลว (ชื่อผู้ใช้หรือรหัสผ่านที่ไม่ถูกต้อง)
{"ข้อผิดพลาด": "invalid_grant", "error_description": "bad credentialss"}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 หมดอายุ)
{"ข้อผิดพลาด": "invalid_token", "error_description": "โทเค็นไม่ได้รับการยอมรับ"}3. รับ access_token ใหม่ตาม refresh_token
โพสต์ http: // localhost: 8182/oauth/token? gant_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-D5B902B902 "ขอบเขต": "อ่านเขียนความน่าเชื่อถือ"}คู่มือการปฏิบัติแอพ
หลังจากแอพได้รับข้อมูลโทเค็นจะต้องบันทึกข้อมูลโทเค็นและเวลาคำขอ ก่อนที่จะผ่าน access_token คุณต้องตรวจสอบว่า access_token หมดอายุหรือไม่ เพื่อลดความดันพื้นหลังให้ตรวจสอบว่าการหมดอายุของ ACCESS_TOKEN ควรทำในเครื่องในแอพหรือไม่ โดยการเปรียบเทียบค่า keyExpires_in ของโทเค็น (ยังคงเป็นระยะเวลาที่ถูกต้อง) รวมถึงเวลาคำขอบันทึกท้องถิ่นและเวลาปัจจุบันเป็นเรื่องง่ายที่จะตรวจสอบว่า Access_Token หมดอายุหรือไม่ หากหมดอายุคุณจะต้องได้รับ access_token ใหม่ผ่าน Refresh_Token เนื่องจากระยะเวลาที่ถูกต้องของ ACCESS_TOKEN เพียง 2 ชั่วโมงจึงจำเป็นต้องมีการตรวจสอบนี้ เช่นเดียวกันสำหรับ refresh_token
สรุป
ด้านบนเป็นรหัส 3 บรรทัดที่แนะนำโดยตัวแก้ไขเพื่อใช้บริการ Spring Boot OAuth2 อย่างรวดเร็ว ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!