5.0.4 • Published 3 years ago

kuzzle-plugin-auth-passport-oauth v5.0.4

Weekly downloads
2
License
Apache-2.0
Repository
github
Last release
3 years ago

Build Status

Plugin Passport OAUTH Authentication

This plugin provides OAUTH2 authentication using Passport.js strategies.

Compatibility matrice

Kuzzle VersionPlugin Version
1.x.x4.x.x
2.x.x5.x.x

Configuration

To edit the configuration of a plugin see custom plugin configuration.

List of available configurations:

NameDefault valueTypeDescription
strategies{}ObjectList of the providers you want to use with passport
credentials{}ObjectCredentials provided by the provider
persist{}ObjectAttributes you want to persist in the user credentials object if the user doesn't exist
scope[]ArrayList of fields in the OAUTH 2.0 scope of access
identifierAttributeStringAttribute from the profile of the provider to use as unique identifier if you want to persist the user in Kuzzle
defaultProfile["default"]ArrayProfiles of the new persisted user
kuzzleAttributesMapping{}ObjectMapping of attributes to persist in the user persisted in Kuzzle
passportStrategy'' StringStrategy name for passport (eg. google-oauth20 while the name of the provider is google)

Here is an example of a configuration:

{
  "strategies": {
    "facebook": {
      "passportStrategy": "facebook",
      "credentials": {
        "clientID": "<your-client-id>",
        "clientSecret": "<your-client-secret>",
        "callbackURL": "http://localhost:7512/_login/facebook",
        "profileFields": ["id", "name", "picture", "email", "gender"]
      },
      "persist": [
        "picture.data.url",
        "last_name",
        "first_name",
        "email"
      ],
      "scope": [
        "email",
        "public_profile"
      ],
      "kuzzleAttributesMapping": {
        "userMail": "email" // will store the attribute "email" as "userEmail" into the user credentials object
      },
      "identifierAttribute": "email"
    }
  },
  "defaultProfiles": [
    "default"
  ]
}

identifierAttribute

This attribute will be used to identify your users. It has to be unique.

You need to choose an attribute declared in the persist array.

Attribute persistence

Attributes declared in the persist array will be persisted in the credentials object and not in the user content.

For example, if you have the following configuration:

{
  "strategies": {
    "facebook": {
      "persist": ["email", "first_name", "picture.data.url"],
      "kuzzleAttributesMapping": {
        "picture.data.url": "avatar_url"
      }
    }
  }
}

And your OAuth provider will send you the following _json payload:

{
  "email": "gfreeman@black-mesa.xen",
  "first_name": "gordon",
  "last_name": "freeman",
  "picture": {
    "data": {
      "url": "http://avatar.url"
    }
  }
}

The created user content will be:

{
  "content": {
    "profileIds": ["default"]
  },
  "credentials": {
    "facebook": {
      "email": "gfreeman@black-mesa.xen",
      "first_name": "gordon",
      "avatar_url": "http://avatar.url"
    }
  }
}

Usage

The easiest way to implement an oauth authentication in your front-end is to use the sdk login oauth popup module

See Kuzzle API Documentation for more details about Kuzzle authentication mechanism.

How to create a plugin

See Kuzzle documentation for more information about how to create your own plugin.

5.0.4

3 years ago

5.0.3

3 years ago

4.0.9

6 years ago

4.0.8

6 years ago

4.0.7

6 years ago

4.0.6

6 years ago

4.0.5

6 years ago

4.0.3

6 years ago

4.0.2

6 years ago

4.0.1

6 years ago

4.0.0

7 years ago

3.0.0

7 years ago

2.0.3

8 years ago

2.0.2

8 years ago

2.0.1

8 years ago

2.0.0

8 years ago

1.0.2

8 years ago

1.0.1

8 years ago

1.0.0

8 years ago

1.0.3

8 years ago