Browse Source
feat: CAS authentication module (#5452)
Co-authored-by: SeaLife <mtries@united-internet.de>
pull/5498/head
Mirco T
2 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
46 additions and
5 deletions
-
server/modules/authentication/cas/authentication.js
-
server/modules/authentication/cas/definition.yml
|
|
@ -1,3 +1,4 @@ |
|
|
|
const _ = require('lodash') |
|
|
|
/* global WIKI */ |
|
|
|
|
|
|
|
// ------------------------------------
|
|
|
@ -10,15 +11,24 @@ module.exports = { |
|
|
|
init (passport, conf) { |
|
|
|
passport.use(conf.key, |
|
|
|
new CASStrategy({ |
|
|
|
ssoBaseURL: conf.ssoBaseURL, |
|
|
|
serverBaseURL: conf.serverBaseURL, |
|
|
|
version: conf.casVersion, |
|
|
|
ssoBaseURL: conf.casUrl, |
|
|
|
serverBaseURL: conf.baseUrl, |
|
|
|
serviceURL: conf.callbackURL, |
|
|
|
passReqToCallback: true |
|
|
|
}, async (req, profile, cb) => { |
|
|
|
try { |
|
|
|
const user = await WIKI.models.users.processProfile({ |
|
|
|
providerKey: req.params.strategy, |
|
|
|
profile |
|
|
|
profile: { |
|
|
|
...profile, |
|
|
|
id: _.get(profile.attributes, conf.uniqueIdAttribute, profile.user), |
|
|
|
email: _.get(profile.attributes, conf.emailAttribute), |
|
|
|
name: _.get(profile.attributes, conf.displayNameAttribute, profile.user), |
|
|
|
picture: '' |
|
|
|
} |
|
|
|
}) |
|
|
|
|
|
|
|
cb(null, user) |
|
|
|
} catch (err) { |
|
|
|
cb(err, null) |
|
|
|
|
|
@ -6,6 +6,37 @@ logo: https://static.requarks.io/logo/cas.svg |
|
|
|
color: green darken-2 |
|
|
|
website: https://apereo.github.io/cas/ |
|
|
|
useForm: false |
|
|
|
isAvailable: true |
|
|
|
props: |
|
|
|
ssoBaseURL: String |
|
|
|
serverBaseURL: String |
|
|
|
baseUrl: |
|
|
|
type: String |
|
|
|
title: Base URL |
|
|
|
hint: 'Base-URL of your WikiJS (for example: https://wiki.example.com)' |
|
|
|
order: 1 |
|
|
|
casUrl: |
|
|
|
type: String |
|
|
|
title: URL to the CAS Server |
|
|
|
hint: 'Base-URL of the CAS server, including context path. (for example: https://login.company.com/cas)' |
|
|
|
order: 2 |
|
|
|
casVersion: |
|
|
|
type: String |
|
|
|
title: CAS Version |
|
|
|
hint: 'The version of CAS to use' |
|
|
|
order: 3 |
|
|
|
enum: |
|
|
|
- CAS3.0 |
|
|
|
- CAS1.0 |
|
|
|
default: 'CAS3.0' |
|
|
|
emailAttribute: |
|
|
|
type: String |
|
|
|
title: Attribute key which contains the users email |
|
|
|
default: email |
|
|
|
order: 4 |
|
|
|
displayNameAttribute: |
|
|
|
type: String |
|
|
|
title: Attribute key which contains the users display name (leave empty if there is none) |
|
|
|
order: 5 |
|
|
|
uniqueIdAttribute: |
|
|
|
type: String |
|
|
|
title: Attribute key which contains the unique identifier of a user. (if empty, username will be used) |
|
|
|
order: 6 |