azure.js 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. 'use strict'
  2. /* global wiki */
  3. // ------------------------------------
  4. // Azure AD Account
  5. // ------------------------------------
  6. const AzureAdOAuth2Strategy = require('passport-azure-ad-oauth2').Strategy
  7. module.exports = (passport) => {
  8. if (wiki.config.auth.azure && wiki.config.auth.azure.enabled) {
  9. const jwt = require('jsonwebtoken')
  10. passport.use('azure_ad_oauth2',
  11. new AzureAdOAuth2Strategy({
  12. clientID: wiki.config.auth.azure.clientId,
  13. clientSecret: wiki.config.auth.azure.clientSecret,
  14. callbackURL: wiki.config.host + '/login/azure/callback',
  15. resource: wiki.config.auth.azure.resource,
  16. tenant: wiki.config.auth.azure.tenant
  17. }, (accessToken, refreshToken, params, profile, cb) => {
  18. let waadProfile = jwt.decode(params.id_token)
  19. waadProfile.id = waadProfile.oid
  20. waadProfile.provider = 'azure'
  21. wiki.db.User.processProfile(waadProfile).then((user) => {
  22. return cb(null, user) || true
  23. }).catch((err) => {
  24. return cb(err, null) || true
  25. })
  26. }
  27. ))
  28. }
  29. }