瀏覽代碼

feat: okta auth module

Nick 6 年之前
父節點
當前提交
d80bb928f7
共有 2 個文件被更改,包括 29 次插入10 次删除
  1. 15 8
      server/modules/authentication/okta/authentication.js
  2. 14 2
      server/modules/authentication/okta/definition.yml

+ 15 - 8
server/modules/authentication/okta/authentication.js

@@ -5,6 +5,7 @@
 // ------------------------------------
 
 const OktaStrategy = require('passport-okta-oauth').Strategy
+const _ = require('lodash')
 
 module.exports = {
   init (passport, conf) {
@@ -15,14 +16,20 @@ module.exports = {
         clientSecret: conf.clientSecret,
         idp: conf.idp,
         callbackURL: conf.callbackURL,
-        response_type: 'code',
-        scope: ['openid', 'email', 'profile']
-      }, (accessToken, refreshToken, profile, cb) => {
-        WIKI.models.users.processProfile(profile).then((user) => {
-          return cb(null, user) || true
-        }).catch((err) => {
-          return cb(err, null) || true
-        })
+        response_type: 'code'
+      }, async (accessToken, refreshToken, profile, cb) => {
+        try {
+          const user = await WIKI.models.users.processProfile({
+            profile: {
+              ...profile,
+              picture: _.get(profile, '_json.profile', '')
+            },
+            providerKey: 'okta'
+          })
+          cb(null, user)
+        } catch (err) {
+          cb(err, null)
+        }
       })
     )
   }

+ 14 - 2
server/modules/authentication/okta/definition.yml

@@ -5,18 +5,30 @@ author: requarks.io
 logo: https://static.requarks.io/logo/okta.svg
 color: blue darken-1
 website: https://www.okta.com/
+isAvailable: true
 useForm: false
+scopes:
+  - profile
+  - email
+  - openid
 props:
   clientId:
+    title: Client ID
     type: String
     hint: 20 chars alphanumeric string
+    order: 2
   clientSecret:
+    title: Client Secret
     type: String
     hint: 40 chars alphanumeric string with a hyphen(s)
+    order: 3
   idp:
     title: Identity Provider ID (idp)
     type: String
-    hint: (optional) 20 chars alphanumeric string
+    hint: (Optional) - 20 chars alphanumeric string
+    order: 4
   audience:
+    title: Org URL
     type: String
-    hint: Okta domain (e.g. https://example.okta.com, https://example.oktapreview.com)
+    hint: Okta organization URL (e.g. https://example.okta.com, https://example.oktapreview.com), found on the Developer Dashboard, in the upper right.
+    order: 1