5

Ich baue eine Chrome-Erweiterung, die mit Salesforce-Chatter API interagieren wird. Aber für einen Benutzer, der die oAuth-Authentifizierung (User Agent Flow) verwendet, muss ich meinen Clientschlüssel in meine Erweiterung einbetten.Embedding Client-ID in Chrome-Erweiterung

Wird dies zu Sicherheitsproblemen führen? Oder gibt es eine Möglichkeit, oAuth zu verwenden, ohne die Client-ID in meine Erweiterung einzubetten?

Antwort

6

Die Client-ID muss in eine Anfrage aufgenommen werden, damit der Provider weiß, dass die Anfrage von Ihnen kam, wie @Matt Lacey bereits darauf hingewiesen hat. Normalerweise gibt der Anbieter auch ein vertrauliches -Clientgeheimnis aus, das zusätzlich in der Zugriffstoken Anforderung enthalten ist, damit der Anbieter überprüfen kann, dass Ihre Anwendung diese Client-ID verwenden kann.

Chrome - Erweiterungen laufen auf einer offenen Plattform und die Plattform selbst bietet keine Methoden, die Erweiterung gegen einen Server zu authentifizieren (was dann auch Salesforce unterstützen müsste) oder Eigenschaften sicher zu speichern (wäre auf einem offene Plattform), so dass die Geheimhaltung des Kundengeheimnisses vertraulich ist, ist leider nicht möglich.

Da dies ein häufiges Problem ist, wird es bereits in der OAuth-Spezifikation berücksichtigt (siehe section 10.1 Client Authentication und 10.2 Client Impersonation). Der Anbieter muss daher zusätzliche Prüfungen durchführen, aber auf der Client-Seite können Sie nichts tun, um die Sicherheit effektiv zu verbessern.

Wenn Sie weitere Informationen dazu benötigen, wie dies zukünftig auf Android-Geräten gehandhabt wird, lesen Sie meine Antwort here.

2

Sie müssen die Client-ID in die Erweiterung einbetten, damit Salesforce weiß, welche App versucht wird, sich zu authentifizieren. Diese Client-IDs sollten immer gespeichert und an den Server weitergegeben werden. Solange Sie sie auf sichere Weise speichern, sollte dies kein Problem darstellen.

+0

Was meinen Sie mit "sichere Speicherung"? Jede Annäherung, die Sie haben? Meine Erweiterung wird öffentlich sein. Was passiert, wenn ein Hacker nur meine Erweiterung kopiert und den Benutzer dazu bringt, sie zu installieren? –

0

Wie Matt erklärt, wenn Sie eine gepackte Anwendung erstellen, werden Sie gezwungen, die Client-ID aufzunehmen. Eine weitere Lösungen ist die App als gehostete App zu schreiben:

What is the difference between packaged apps and hosted apps?

Der Nachteil dieser ist die zusätzliche Komplexität eines Web-Servers zu verwalten. Aber es wird mehr Sicherheit ermöglichen.

+0

Und wie würden Sie dann die Chrome-Erweiterung für den Webserver authentifizieren? Dies verschiebt das Problem von "Client <-> Salesforce" zu "Client <-> Server". –

+1

Sie würden nicht! Führen Sie keinen Code über den Client aus. Eine gehostete Anwendung ist effektiv eine Webanwendung in einem Chrome-Appstore-Wrapper. –

+0

Ah sorry @Daniel, missverstanden deine Antwort: / –