Добавьте 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
из этого репозитория и вставьте их в свой проект в те же каталоги. Вы можете скачать этот репозиторий в виде 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
) ) )
}
Существуют также параметры для настройки маршрутов, которые должны включить единый вход в вашем проекте. Посмотрите подпись NodesSSOConfig
для получения дополнительной информации.
Обязательно добавьте соответствующие маршруты единого входа для узлов, например, в файл configure.swift
или routes.swift
:
services . register ( Router . self ) { container -> EngineRouter in
let router = EngineRouter . default ( )
try router . useNodesSSORoutes ( MyNodesSSOAuthenticatableUser . self , on : container )
return router
}
Чтобы отобразить встраивание кнопки единого входа, вам нужно будет добавить тег 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.