เพิ่ม NodesSSO
ลงในการขึ้นต่อกันของแพ็คเกจ (ในไฟล์ Package.swift
ของคุณ):
dependencies: [
... ,
. package ( url : " https://github.com/nodes-vapor/nodes-sso.git " , from : " 1.0.0 " )
]
เช่นเดียวกับเป้าหมายของคุณ (เช่น "แอป"):
targets: [
...
. target (
name : " App " ,
dependencies : [ ... " NodesSSO " ... ]
) ,
...
]
คัดลอกโฟลเดอร์ NodesSSO
จาก Resources/Views
และ Public
จาก repo นี้ และวางลงในโปรเจ็กต์ของคุณลงในไดเร็กทอรีเดียวกัน คุณสามารถดาวน์โหลด repo นี้เป็นไฟล์ zip จากนั้นย้ายไฟล์ไปยังไดเร็กทอรีที่กล่าวถึง
ขั้นแรกตรวจสอบให้แน่ใจว่าคุณได้นำเข้า NodesSSO ทุกที่ที่จำเป็น:
import NodesSSO
public func configure ( _ config : inout Config , _ env : inout Environment , _ services : inout Services ) throws {
try services . register ( NodesSSOProvider < MyNodesSSOAuthenticatableUser > ( config : NodesSSOConfig (
projectURL : " https://myproject.com " ,
redirectURL : " https://url-for-sso.com " ,
salt : " MY-SECRET-HASH-FOR-SSO " ,
environment : env
) ) )
}
นอกจากนี้ยังมีพารามิเตอร์สำหรับการตั้งค่าเส้นทางที่ควรเปิดใช้งาน SSO ในโปรเจ็กต์ของคุณ ดูลายเซ็นของ NodesSSOConfig
สำหรับข้อมูลเพิ่มเติม
ตรวจสอบให้แน่ใจว่าได้เพิ่มเส้นทาง Nodes SSO ที่เกี่ยวข้อง เช่น ใน configure.swift
หรือ routes.swift
ของคุณ :
services . register ( Router . self ) { container -> EngineRouter in
let router = EngineRouter . default ( )
try router . useNodesSSORoutes ( MyNodesSSOAuthenticatableUser . self , on : container )
return router
}
หากต้องการแสดงผลการฝังปุ่ม SSO คุณจะต้องเพิ่มแท็ก NodesSSO Leaf:
public func configure ( _ config : inout Config , _ env : inout Environment , _ services : inout Services ) throws {
services . register { _ -> LeafTagConfig in
var tags = LeafTagConfig . default ( )
tags . useNodesSSOLeafTags ( )
return tags
}
}
บนเพจที่คุณต้องการให้ปุ่ม NodesSSO ปรากฏ ให้ฝังไฟล์ลีฟ sso-button
:
#embed("NodesSSO/sso-button")
NodesSSOAuthenticatable
NodesSSOProvider
เป็นประเภททั่วไปและต้องการประเภทที่สอดคล้องกับ NodesSSOAuthenticatable
โปรโตคอลนี้มีวิธีการหนึ่งที่ถูกเรียกเมื่อ SSO เสร็จสิ้นสำเร็จ:
public static func authenticated ( _ user : AuthenticatedUser , req : Request ) -> Future < Response >
เมื่อระบุ AuthenticatedUser
นี้แล้ว ผู้ดำเนินการจะสามารถค้นหา email
และสร้างผู้ใช้ได้หากไม่มีอยู่ หรือหากมี ให้เข้าสู่ระบบผู้ใช้โดยอัตโนมัติ
แพ็คเกจนี้ได้รับการพัฒนาและดูแลโดยทีม Vapor ที่ Nodes
แพ็คเกจนี้เป็นซอฟต์แวร์โอเพ่นซอร์สที่ได้รับอนุญาตภายใต้ใบอนุญาต MIT