Fügen Sie NodesSSO
zu den Paketabhängigkeiten hinzu (in Ihrer Package.swift
Datei):
dependencies: [
... ,
. package ( url : " https://github.com/nodes-vapor/nodes-sso.git " , from : " 1.0.0 " )
]
sowie zu Ihrem Ziel (z. B. „App“):
targets: [
...
. target (
name : " App " ,
dependencies : [ ... " NodesSSO " ... ]
) ,
...
]
Kopieren Sie die NodesSSO
-Ordner aus Resources/Views
und Public
aus diesem Repository und fügen Sie sie in Ihr Projekt in denselben Verzeichnissen ein. Sie können dieses Repo als Zip herunterladen und die Dateien dann in die genannten Verzeichnisse verschieben.
Stellen Sie zunächst sicher, dass Sie NodesSSO überall dort importiert haben, wo es benötigt wird:
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
) ) )
}
Es gibt auch Parameter zum Festlegen der Routen, die SSO in Ihrem Projekt ermöglichen sollen. Weitere Informationen finden Sie in der Signatur von NodesSSOConfig
.
Stellen Sie sicher, dass Sie die relevanten Knoten-SSO-Routen hinzufügen, z. B. in Ihrer configure.swift
routes.swift
:
services . register ( Router . self ) { container -> EngineRouter in
let router = EngineRouter . default ( )
try router . useNodesSSORoutes ( MyNodesSSOAuthenticatableUser . self , on : container )
return router
}
Um die Einbettung der SSO-Schaltfläche darzustellen, müssen Sie das NodesSSO-Leaf-Tag hinzufügen:
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
}
}
Betten Sie auf der Seite, auf der die NodesSSO-Schaltfläche angezeigt werden soll, die Blattdatei für die sso-button
ein:
#embed("NodesSSO/sso-button")
NodesSSOAuthenticatable
Der NodesSSOProvider
ist generisch und erfordert einen Typ, der NodesSSOAuthenticatable
entspricht. Dieses Protokoll verfügt über eine Methode, die aufgerufen wird, wenn das SSO erfolgreich abgeschlossen wurde:
public static func authenticated ( _ user : AuthenticatedUser , req : Request ) -> Future < Response >
Anhand dieses AuthenticatedUser
kann der Implementierer dann die email
nachschlagen und den Benutzer erstellen, falls dieser nicht vorhanden ist, oder, wenn dies der Fall ist, den Benutzer automatisch anmelden.
Dieses Paket wird vom Vapor-Team bei Nodes entwickelt und gepflegt.
Bei diesem Paket handelt es sich um Open-Source-Software, die unter der MIT-Lizenz lizenziert ist