Ajoutez NodesSSO
aux dépendances du package (dans votre fichier Package.swift
) :
dependencies: [
... ,
. package ( url : " https://github.com/nodes-vapor/nodes-sso.git " , from : " 1.0.0 " )
]
ainsi qu'à votre cible (ex : « App ») :
targets: [
...
. target (
name : " App " ,
dependencies : [ ... " NodesSSO " ... ]
) ,
...
]
Copiez les dossiers NodesSSO
de Resources/Views
et Public
de ce référentiel et collez-les dans votre projet dans les mêmes répertoires. Vous pouvez télécharger ce dépôt sous forme de zip, puis déplacer les fichiers dans les répertoires mentionnés.
Assurez-vous d'abord que vous avez importé NodesSSO partout où cela est nécessaire :
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
) ) )
}
Il existe également des paramètres permettant de définir les routes qui doivent activer le SSO dans votre projet. Jetez un œil à la signature de NodesSSOConfig
pour plus d’informations.
Assurez-vous d'ajouter les routes SSO des nœuds pertinentes, par exemple dans votre configure.swift
ou routes.swift
:
services . register ( Router . self ) { container -> EngineRouter in
let router = EngineRouter . default ( )
try router . useNodesSSORoutes ( MyNodesSSOAuthenticatableUser . self , on : container )
return router
}
Afin d'intégrer le bouton SSO, vous devrez ajouter la balise 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
}
}
Sur la page sur laquelle vous souhaitez que le bouton NodesSSO apparaisse, intégrez le fichier feuille sso-button
:
#embed("NodesSSO/sso-button")
NodesSSOAuthenticatable
Le NodesSSOProvider
est générique et nécessite un type conforme à NodesSSOAuthenticatable
. Ce protocole a une méthode qui est appelée lorsque le SSO s'est terminé avec succès :
public static func authenticated ( _ user : AuthenticatedUser , req : Request ) -> Future < Response >
Étant donné cet AuthenticatedUser
l'implémenteur peut alors rechercher l' email
et créer l'utilisateur s'il n'existe pas, ou si c'est le cas, connecter l'utilisateur automatiquement.
Ce package est développé et maintenu par l'équipe Vapor de Nodes.
Ce package est un logiciel open source sous licence MIT