NodesSSO
パッケージの依存関係 ( Package.swift
ファイル内) に追加します。
dependencies: [
... ,
. package ( url : " https://github.com/nodes-vapor/nodes-sso.git " , from : " 1.0.0 " )
]
ターゲット (例: 「アプリ」) にも同様に:
targets: [
...
. target (
name : " App " ,
dependencies : [ ... " NodesSSO " ... ]
) ,
...
]
このリポジトリのResources/Views
およびPublic
からNodesSSO
フォルダーをコピーし、プロジェクトの同じディレクトリに貼り付けます。このリポジトリを 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
の署名を参照してください。
関連するノード 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 が正常に終了したときに呼び出されるメソッドが 1 つあります。
public static func authenticated ( _ user : AuthenticatedUser , req : Request ) -> Future < Response >
このAuthenticatedUser
が与えられると、実装者はemail
を検索して、ユーザーが存在しない場合はユーザーを作成し、存在する場合はユーザーを自動的にログインさせることができます。
このパッケージは、Nodes の Vapor チームによって開発および保守されています。
このパッケージは、MIT ライセンスに基づいてライセンス供与されたオープンソース ソフトウェアです