Creating own sso for login from other database
-
Hello,
I have my own database, from which I want user to login, where the password keeps changing each month. So I don't want user to create account in nodebb again. I tried creating an sso plugin for overriding login but till now I am not sure to get the request data from the user i.e. username/email and password which he/she is entering.
I have seen firehook of overriding login and its not sending any of the user input parameters.
Ref: https://github.com/NodeBB/NodeBB/blob/master/src/routes/authentication.js#L41
-
I am guessing on all of this, never done it before
It sounds as if you want to override the local login strategy rather than provide an SSO service.
To do this you need to provide a local login strategy to passportjs during that hook, just as the core does here:
https://github.com/NodeBB/NodeBB/blob/master/src/routes/authentication.js#L43Instead of
controllers.authentication.localLogin
, use your own callback function. It is passed (req, username, password, next) just as it is here.You would essentially the same thing that function does, but instead of using the local user info, use your own database to compare the username/passwords too.
If the login is successful, you need to create a local user and attach an ID from your database entry to the user's local database entry, so you can look that up when the user logs in again.
Also in the admin panel, change the registration type to
none
, so that users are required to have an account at your existing db.