James_Hope
(James Hope)
16. Januar 2021 um 08:38
1
Wir verwenden Firebase als unseren externen SSO-Anbieter. Wir haben die Discourse-Anweisungen dazu befolgt.
In den Logs erhalten wir folgenden Fehler:
Verbose SSO log: Started SSO Process add_groups: admin: moderator: avatar_force_update: avatar_url: bio: card_background_url: email: external_id: groups: locale: locale_force_update: logo
Verbose SSO log: Nonce has already expired add_groups: admin: moderator: avatar_force_update: avatar_url: bio: card_background_url: email: [real email]: external_id: [external id]
In den Discourse-Logs sehen wir zudem:
Verbose SSO log: Started SSO process
add_groups:
admin:
moderator:
avatar_force_update:
avatar_url:
bio:
card_background_url:
email:
external_id:
groups:
locale:
locale_force_update:
logout:
name:
nonce: 773cb9d08db7007c9fb833e6c5e3a701
profile_background_url:
remove_groups:
require_activation:
return_sso_url: https://discouse-site/session/sso_login
suppress_welcome_message:
title:
username:
website:
location:
UND
Verbose SSO log: Nonce has already expired
add_groups:
admin:
moderator:
avatar_force_update:
avatar_url:
bio:
card_background_url:
email: [real email]
external_id: Be06ze0v0YO7I8SArWRoUVsxJ1k1
groups:
locale:
locale_force_update:
logout:
name: [real email]
nonce: Ym05dVkyVTlOV0kwTTJVeU1UTTVNamN6TnpNd01UbG1aVEJtWkRjMFlqTmtOV1U1TmpJbWNtVjBkWEp1WDNOemIxOTFjbXc5YUhSMGNITWxNMEVsTWtZbE1rWmpiMjF0ZFc1cGRIa3VZbTl2Wnk1aGNIQWxNa1p6WlhOemFXOXVKVEpHYzNOdlgyeHZaMmx1
profile_background_url:
remove_groups:
require_activation:
return_sso_url: https://discouse-site/session/sso_login
suppress_welcome_message:
title:
username: [real email]
website:
location:
Jede Unterstützung seitens des Discourse-Teams wäre uns eine große Hilfe, da wir die Website derzeit nicht nutzen können.
James
pfaffman
(Jay Pfaffman)
16. Januar 2021 um 13:50
2
Ich bin kein Experte auf diesem Gebiet, aber meine Vermutung ist, dass du überprüfen solltest, ob deine Uhrzeit korrekt ist.
James_Hope
(James Hope)
16. Januar 2021 um 16:02
3
Danke für den Vorschlag, aber die Uhr scheint nicht das Problem zu sein. Der Discourse-Server und der Server, auf dem der Nonce generiert wird, haben die gleiche Zeit.
James_Hope
(James Hope)
17. Januar 2021 um 13:21
4
Ich teile mit Ihnen die Methode, mit der wir die Rückgabe-URL generieren, in der Hoffnung, dass dies etwas mehr Licht auf das Problem wirft:
public String generateSSORedirectURL(String nonce, String email, String uid) {
// Erstellen des Rückgabepayloads
HashMap<String, String> params = new HashMap<String, String>();
params.put("nonce", nonce);
params.put("external_id", uid);
params.put("email", email);
params.put("username", email);
params.put("require_activation", "false");
params.put("name", email);
params.put("return_sso_url", "https://discourse-site/session/sso_login");
log.info("params {}", params);
// Vorbereiten des Rückgabepayloads
String encodedParams = params.keySet().stream()
.map(key -> key + "=" + encodeValue(params.get(key)))
.collect(Collectors.joining("&"));
log.info("encoded parameters {}", encodedParams);
String returnPayload = Base64.getEncoder().encodeToString(encodedParams.getBytes());
log.info("return Payload {}", returnPayload);
// Berechnung der HMAC-SHA256-Signatur für den Payload
byte[] hmacSha256 = calcHmacSha256(ssoSecret.getBytes(), returnPayload.getBytes());
log.info("hmacSha256 sig {}", hmacSha256);
String hmacSha265Hex = String.format("%x", new BigInteger(1, hmacSha256));
log.info("hmacSha256, sig in Hex {}", String.format("%x", new BigInteger(1, hmacSha256)));
HashMap<String, String> params2 = new HashMap<String, String>();
params2.put("sig", hmacSha265Hex);
params2.put("sso", returnPayload);
log.info("params2 {}", params);
String encodedParams2 = params2.keySet().stream()
.map(key -> key + "=" + encodeValue(params2.get(key)))
.collect(Collectors.joining("&"));
log.info("encoded parameters {}", encodedParams2);
// Erstellen und Zurückgeben der Abfragezeichenkette
String queryString = forumUrl + "session/sso_login?" + encodedParams2;
log.info("queryString {}", queryString);
return queryString;
}
cb-candor
(Colin Bethea)
9. März 2021 um 00:17
5
Hast du das jemals herausgefunden? @James_Hope