Trading Widget Authentifizierung

Verwenden Sie Partner-Token für neue eingebettete Handels- SSO Integrationsmöglichkeiten.

Als Markdown anzeigen

Partner-Token vermeidet es, kurze Tokens in URLs einzufügen und hält apiSecret im Partner-Backend.

1const widget = TradingWidget.create('#trading-widget', {
2 baseUrl: 'https://app.6mm.com',
3 auth: {
4 mode: 'partner-token',
5 tokenProvider: async ({ channelId, symbol, reason }) => {
6 const resp = await fetch('/api/trading/embed-token', {
7 method: 'POST',
8 credentials: 'include',
9 headers: { 'Content-Type': 'application/json' },
10 body: JSON.stringify({ channelId, symbol, reason }),
11 })
12
13 if (!resp.ok) {
14 throw new Error('Failed to request embed token')
15 }
16
17 return resp.json()
18 },
19 },
20})

Backend-Fluss

1. Partner frontend receives auth_request from the iframe.
2. SDK calls tokenProvider.
3. Partner frontend calls its own backend.
4. Partner backend validates the partner session.
5. Partner backend calls 6MM Agent API or Java SDK createEmbedToken.
6. SDK sends embedToken to the iframe through postMessage.
7. iframe exchanges embedToken for a 6MM access token.
8. iframe continues initialization and emits ready.

tokenProvider Vertrag

SpielfeldRegieBeschreibung
channelIdSDK -> Partner-BackendEindeutige Widget-Sessions-Kennung. Das Backend sollte es an createEmbedTokenweitergeben.
SymbolSDK -> Partner-BackendAktuelles angefordertes Handelssymbol. Nutze es, um das Token bei Bedarf zu scopen.
GrundSDK -> Partner-BackendWarum die SDK ein Token anfordert, wie zum Beispiel eine Erstladung oder Aktualisierung.
embedTokenPartner-Backend -> SDKKurzlebiger Token, der vom Agent SDK oder Agent API erstellt wird.
expireAtPartner-Backend -> SDKToken-Ablaufzeitstempel zurückgegeben von 6MM.

Fehlerhandhabung

ZustandEmpfohlenes Handling
Partnersitzung abgelaufenGeben Sie 401 vom Partnerendpunkt zurück und bitten Sie den Benutzer, sich erneut anzumelden.
Die Token-Erstellung scheiterte vorübergehendWirf einen Fehler in tokenProvider und lass das Widget einen Authentifizierungsfehler anzeigen.
channelId MismatchLehne die Anfrage ab und erstelle die Widget-Instanz neu.
Der Nutzer darf nicht handelnGeben Sie einen vom Partner gesteuerten Fehler zurück und erstellen Sie kein Einbettungstoken.

Kompatibilitätsmodus: agent-sso

Agent-SSO behält den älteren /Agent-Entry-Ticket-Fluss aufrecht. Bevorzuge Partner-Token für neue Integrationen.

1const widget = TradingWidget.create('#trading-widget', {
2 baseUrl: 'https://app.6mm.com',
3 auth: {
4 mode: 'agent-sso',
5 entryUrlProvider: async ({ redirectPath }) => {
6 const resp = await fetch('/api/trading-entry', {
7 method: 'POST',
8 credentials: 'include',
9 headers: { 'Content-Type': 'application/json' },
10 body: JSON.stringify({ redirectPath }),
11 })
12 const data = await resp.json()
13 return data.webUrl
14 },
15 },
16})