Sync SSO node.js Implementierung

Here is example with NodeJS if anyone needs it:

'use strict';

const axios = require('axios');
const crypto = require('crypto');
const qs = require('querystring');
const config = require('./config');

function getHash(data, secret) {
  return crypto.createHmac('sha256', secret)
    .update(data)
    .digest('hex');
}

function syncSso() {
  const endpoint = `${config.discourse.url}/admin/users/sync_sso`;
  const params = {
    external_id: 1,
    email: 'bob@example.com',
    username: 'bob',
    add_groups: 'eurorack',
    require_activation: true
  };
  const headers = {
    'Api-Key': config.discourse.apiKey,
    'Api-Username':  config.discourse.apiUsername,
    'Content-Type': 'multipart/form-data'
  };
  const sso = Buffer.from(qs.stringify(params)).toString('base64');
  const sig = getHash(sso, config.discourse.ssoSecret);
  return axios.post(endpoint, qs.stringify({ sso, sig }), { headers })
    .then(({ data }) => data)
    .catch(err => err);
}
3 „Gefällt mir“

Hallo, ich habe das obige Codefragment in meiner Node-Anwendung ausprobiert und es funktionierte gut, als ich zu http://localhost:4200/?sso=bm9uY2U9OTRiNzM1ODU1NDUxOTBmNTE3YWE1NzM0YjA5MDFiODQmcmV0dXJuX3Nzb191cmw9aHR0cCUzQSUyRiUyRmxvY2FsaG9zdCUzQTMwMDAlMkZzZXNzaW9uJTJGc3NvX2xvZ2lu&sig=9fdb6d9f8bd91005d3612c476c91c2acbb650b5532feb9eb131405e2bbe0c0c2 weitergeleitet wurde.

Manchmal gibt es ein Timeout und manchmal erhalte ich „You’re all caught up!“.

Nach ein paar Versuchen kann ich nicht einmal mehr auf das Admin-Panel unter meinem localhost:4200 zugreifen. Es wird immer wieder zur obigen URL weitergeleitet.

Ich habe bereits den Cache und die Cookies meines Browsers gelöscht.

Bitte helfen Sie mir.

Ich erhalte jedes Mal nur dies. Selbst wenn ich auf die Anmeldeschaltfläche klicke, kann ich nicht auf mein Admin-Panel zugreifen, es wird zur SSO-Umleitungs-URL weitergeleitet.