Zum Hauptinhalt springen

Fin Messenger: JWT-Authentifizierung für Salesforce Enhanced Chat einrichten

So generieren Sie JWTs, um den Fin Messenger für Salesforce zu sichern

Dieser Artikel erklärt, wie man die zwei JSON Web Tokens (JWTs) generiert und konfiguriert, die Fin Messenger benötigt, um users bei der Weiterleitung von Gesprächen an Salesforce Enhanced Chat zu authentifizieren. Durch das Abschließen dieser Schritte kann Fin die Benutzeridentität sicher sowohl an Intercom als auch an Salesforce übermitteln, sodass Ihre Teammitglieder der Identität der Kunden, mit denen sie sprechen, vertrauen können.

Hinweis: Voraussetzungen: Fin Messenger muss bereits in Ihrer App installiert sein, und ein Salesforce Enhanced Chat Messaging Channel muss konfiguriert sein. Das Ruby jwt Gem wird benötigt, wenn Sie die untenstehenden Rails-Codebeispiele verwenden. Diese Funktion ist in Fin Messenger-Plänen verfügbar, die Salesforce-Integration beinhalten – wenden Sie sich an Ihr Account-Team, um den Zugang zu bestätigen.

Sie müssen beide JWTs zu Ihren intercomSettings-Attributen hinzufügen, um die Fin Messenger-Authentifizierung mit Salesforce Enhanced Chat zu aktivieren:

  • intercom_user_jwt

    • Dies wird verwendet, um Fin sicher die Contact ID und alle Attribute für den Contact oder Account bereitzustellen, die Sie Fin (oder Salesforce) übermitteln möchten.

  • salesforce_identity_token

    • Dies wird verwendet, um den user bei Salesforce Enhanced Chat zu authentifizieren, damit Ihre Teammitglieder sicher sein können, dass der user tatsächlich die Person ist, die er vorgibt zu sein.

Wenn intercom_user_jwt weggelassen wird, kann Fin keine Kontaktdaten sicher an Salesforce übermitteln. Wenn salesforce_identity_token weggelassen wird, kann Salesforce die Identität des users nicht verifizieren, und Ihre Teammitglieder können nicht bestätigen, dass der Kunde tatsächlich die Person ist, die er vorgibt zu sein.

Beide JWTs müssen serverseitig bei jedem Seitenaufruf für den aktuellen user generiert werden, wobei für jeden ein separater privater Schlüssel verwendet wird. Folgen Sie diesen Schritten, um jeden Schlüssel zu erhalten und die Benutzerverifizierung in Fin Messenger und Salesforce zu aktivieren:

  1. Rufen Sie Ihren Intercom-Privatschlüssel ab – gehen Sie zu Einstellungen > Messenger > Sicherheit und kopieren Sie Ihr Messenger API Secret. Dies ist der Signaturschlüssel für intercom_user_jwt.

  2. Bereiten Sie Ihren Salesforce-Privatschlüssel vor – wenn Sie bereits einen haben, verwenden Sie denselben Schlüssel, der für Salesforce Enhanced Chat konfiguriert ist. Falls nicht, generieren Sie einen privaten Schlüssel und ein selbstsigniertes Zertifikat mit OpenSSL (ein Kommandozeilen-Tool zur Generierung kryptografischer Schlüssel), laden Sie das Zertifikat zu Salesforce hoch und fügen Sie es Ihrem Messaging Channel hinzu. Siehe Salesforce: Generate an Access Token for an Authenticated User für eine Schritt-für-Schritt-Anleitung.

  3. Aktivieren Sie die Benutzerverifizierung in Salesforce – gehen Sie zu Setup > Messaging Settings, suchen Sie den Kanal, der mit Ihrer Embedded Service Deployment verknüpft ist, und aktivieren Sie Add User Verification. Siehe Salesforce: Token-Based User Verification Setup für vollständige Anweisungen.

Das folgende Rails-Beispiel zeigt, wie beide JWTs für die Authentifizierung von Fin Messenger und Salesforce Enhanced Chat generiert und in Ihr intercomSettings-Objekt übergeben werden:

Rails-Ansicht – Übergabe der JWTs an intercomSettings für Fin Messenger:

  window.intercomSettings = {
api_base: "https://api-iam.intercom.io",
app_id: "your-app-id-here",
user_id: "<%= current_user&.id %>",
intercom_user_jwt: "<%= intercom_jwt(current_user&.id %>",
salesforce_identity_token: "<%= salesforce_jwt(current_user&.id) %>"
};

Rails-Hilfsmittel – Generierung von Intercom- und Salesforce-JWTs für Fin Messenger:

intercom_jwt verwendet HS256 (HMAC-SHA256, einen symmetrischen Signaturalgorithmus) mit Ihrem Intercom Messenger API Secret. salesforce_jwt verwendet RS256 (RSA-SHA256, einen asymmetrischen Signaturalgorithmus) mit Ihrem Salesforce-Privatschlüssel.

  def intercom_jwt(user_id)
JWT.encode({ user_id: user_id, exp: Time.now.to_i+3600 }, INTERCOM_JWT_SECRET, "HS256")
end

def salesforce_jwt(contact_id)

# JWT payload
payload = {
iss: "intercom.com", # Set to whatever is set as Issuer in SF Enhanced Chat User Verification settings
sub: contact_id,
aud: "https://your-salesforce-subdomain-here.my.salesforce-scrt.com",
exp: Time.now.to_i + 3600, # expires in 1 hour
iat: Time.now.to_i
}

# JWT headers
headers = {
alg: "RS256",
typ: "JWT",
kid: "WebAppKey1" # Your key id here
}

JWT.encode(payload, OpenSSL::PKey::RSA.new(SF_PRIVATE_KEY), "RS256", headers)
end

Hinweis: Beide JWTs sind so eingestellt, dass sie nach 1 Stunde ablaufen (exp: Time.now.to_i + 3600). Sie müssen bei jedem Seitenaufruf neu generiert werden – speichern Sie sie nicht zwischen den Sitzungen. Wenn ein JWT mitten im Gespräch abläuft, muss der Kunde möglicherweise die Seite aktualisieren, um sich erneut zu authentifizieren. Überprüfen Sie Ihre Salesforce Messaging Channel-Konfiguration auf Mindest- oder Höchstablaufzeiten für salesforce_identity_token.

Hat dies deine Frage beantwortet?