Udostępnij za pośrednictwem


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