Kontrakt tokenu usługi Azure Fluid Relay
Żądania wysyłane do usługi Azure Fluid Relay powinny zawierać token JWT w nagłówku autoryzacji. Ten token powinien być podpisany przez klucz dzierżawy.
Roszczenia
JWTs (tokeny sieci Web JSON) są podzielone na trzy części:
- Nagłówek — zawiera informacje o sposobie weryfikacji tokenu, w tym informacje o typie tokenu i sposobie jego podpisania.
- Payload — zawiera wszystkie ważne dane dotyczące użytkownika lub aplikacji, które próbują wywołać usługę.
- Signature — czy surowiec używany do weryfikacji tokenu.
Każda część jest oddzielona kropką (.) i oddzielnie zakodowaną w formacie Base64.
Oświadczenia nagłówka
Oświadczenie | Format | opis |
---|---|---|
alga | string | Algorytm używany do podpisywania tokenu. Na przykład "HS256" |
Typowe | string | Ta wartość powinna zawsze mieć wartość "JWT". |
Oświadczenia ładunku
Oświadczenie | Format | opis |
---|---|---|
Documentid | string | Generowane przez usługę Azure Fluid Relay (AFR). Określa dokument, dla którego jest generowany token. |
zakres | string[] | Identyfikuje uprawnienia wymagane przez klienta w dokumencie lub podsumowaniu. Dla każdego zakresu można zdefiniować uprawnienia, które mają zostać nadane klientowi. |
tenantId | string | Identyfikuje dzierżawę. |
Użytkownik | JSON | Identyfikuje użytkowników aplikacji. Aplikacja może jej używać do identyfikowania użytkowników przy użyciu grupy odbiorców Elastyczna struktura.{ id: <user_id>, name: <user_name>, additionalDetails: { email: <email>, date: <date>, }, } |
Iat | number, sygnatura czasowa system UNIX | Wyrażenie "Wystawione pod adresem" wskazuje, kiedy wystąpiło uwierzytelnianie dla tego tokenu. |
exp | number, sygnatura czasowa system UNIX | Oświadczenie "exp" (czas wygaśnięcia) identyfikuje czas wygaśnięcia w dniu lub po upływie którego nie można zaakceptować JWT do przetwarzania. Okres istnienia tokenu nie może przekraczać 1 godziny. |
Ver | string | Wskazuje wersję tokenu dostępu. Musi mieć wartość 1.0 . |
jti | string | Opcjonalny. Oświadczenie "jti" (JWT ID) zawiera unikatowy identyfikator JWT. Wartość identyfikatora MUSI być przypisana w sposób, który gwarantuje, że istnieje niewielkie prawdopodobieństwo, że ta sama wartość zostanie przypadkowo przypisana do innego obiektu danych. Zachęcamy do korzystania z tego oświadczenia, aby uniknąć niepowodzeń z powodu użycia tego samego tokenu podczas tworzenia dokumentu. |
Przykładowy token usługi Azure Fluid Relay
{
"alg": "HS256",
"typ": "JWT"
}.{
"documentId": "746c4a6f-f778-4970-83cd-9e21bf88326c",
"scopes": [ "doc:read", "doc:write", "summary:write" ],
"iat": 1599098963,
"exp": 1599098963,
"tenantId": "AzureFluidTenantId",
"ver": "1.0",
"jti": "d7cd6602-2179-11ec-9621-0242ac130002"
}.[Signature]
Jak można wygenerować token usługi Azure Fluid Relay?
Możesz użyć pakietu npm jsonwebtoken i podpisać token przy użyciu tej metody.
export function getSignedToken(
tenantId: string,
documentId: string,
tokenLifetime: number = 60 * 60,
ver: string = "1.0") {
jwt.sign(
{
documentId,
user: {
displayName: "displayName",
id: "userId",
name: "userName"
},
scopes: ["doc:read", "doc:write", "summary:write"],
iat: Math.round((new Date()).getTime() / 1000),
exp: Math.round((new Date()).getTime() / 1000) + tokenLifetime, //set the expiry date based on your needs but max-limit is one hour.
tenantId,
ver,
jti: uuid(),
},
"<tenant_key>");
}