Trading Widget Автентифікація

Використовуйте партнерський токен для нових вбудованих торгових SSO інтеграцій.

View as Markdown

Partner-token уникає розміщення коротких токенів у URL і зберігає apiSecret на партнерському бекенді.

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})

Бекенд-потік

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 контракт

ПолеРежисураОпис
channelIdSDK -> Партнерський бекендУнікальний ідентифікатор сесії віджета. Бекенд має передавати його createEmbedToken.
СимволSDK -> Партнерський бекендПоточний запитуваний торговий символ. Використовуйте його для обмеження токена, коли це потрібно.
ПричинаSDK -> Партнерський бекендЧому SDK запитує токен, наприклад, початкове завантаження або оновлення.
embedTokenПартнерський бекенд -> SDKКороткочасний токен, створений Agent SDK або агентом API.
expireAtПартнерський бекенд -> SDKТермін дії токена повернений 6MM.

Обробка відмов

СтанРекомендоване поводження
Партнерна сесія закінчиласяПоверніть 401 з партнерської кінцевої точки і попросіть користувача увійти ще раз.
Створення токена тимчасово не вдалосяДодайте помилку в tokenProvider і дозвольте віджету виявити помилку автентифікації.
channelId невідповідністьВідхиліть запит і створіть екземпляр віджета.
Користувач не має права торгуватиПоверніть помилку, контрольовану партнером, і не створюйте embed-токен.

Режим сумісності: agent-sso

Agent-sso зберігає старий потік /agent-entry ticket. Віддавайте перевагу партнерському токені для нових інтеграцій.

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})