Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure Static Web Apps udostępnia informacje o użytkownikach związanych z uwierzytelnianiem za pośrednictwem punktu końcowego bezpośredniego dostępu i funkcji interfejsu API.
Wiele interfejsów użytkownika w dużym stopniu opiera się na danych uwierzytelniania użytkownika. Punkt końcowy bezpośredniego dostępu to interfejs API narzędzia, który uwidacznia informacje o użytkowniku bez konieczności implementowania funkcji niestandardowej. Poza wygodą punkt końcowy dostępu bezpośredniego nie podlega opóźnieniom uruchamiania zimnego, które są skojarzone z architekturą bezserwerową.
W tym artykule pokazano, jak odczytywać informacje o użytkowniku z wdrożonej aplikacji. Jeśli chcesz odczytać emulowane informacje o użytkowniku podczas programowania lokalnego, zobacz Emulacja autoryzacji i uwierzytelniania.
Dane podmiotu zabezpieczeń klienta
Obiekt danych podmiotu zabezpieczeń klienta uwidacznia informacje umożliwiające identyfikację użytkownika w aplikacji. Następujące właściwości są opisywane w obiekcie podmiotu zabezpieczeń klienta:
Właściwości | opis |
---|---|
identityProvider |
Nazwa dostawcy tożsamości. |
userId |
Unikatowy identyfikator specyficzny dla usługi Azure Static Web Apps dla użytkownika.
|
userDetails |
Nazwa użytkownika lub adres e-mail użytkownika. Niektórzy dostawcy zwracają adres e-mail użytkownika, a inni wysyłają dojście użytkownika. |
userRoles |
Tablica przypisanych ról użytkownika. |
claims |
Tablica oświadczeń zwróconych przez niestandardowego dostawcę uwierzytelniania. Dostępny tylko w punkcie końcowym dostępu bezpośredniego. |
Poniższy przykład to przykładowy obiekt podmiotu zabezpieczeń klienta:
{
"identityProvider": "github",
"userId": "abcd12345abcd012345abcdef0123450",
"userDetails": "username",
"userRoles": ["anonymous", "authenticated"],
"claims": [{
"typ": "name",
"val": "Azure Static Web Apps"
}]
}
Punkt końcowy dostępu bezpośredniego
Możesz wysłać GET
żądanie do /.auth/me
trasy i otrzymać bezpośredni dostęp do danych podmiotu zabezpieczeń klienta. Gdy stan widoku opiera się na danych autoryzacji, użyj tego podejścia, aby uzyskać najlepszą wydajność.
W przypadku zalogowanych użytkowników odpowiedź zawiera obiekt JSON podmiotu zabezpieczeń klienta. Żądania nieuwierzytelnionych użytkowników zwracają wartość null
.
Korzystając z interfejsu API pobierania 1, możesz uzyskać dostęp do danych podmiotu zabezpieczeń klienta przy użyciu następującej składni.
async function getUserInfo() {
const response = await fetch('/.auth/me');
const payload = await response.json();
const { clientPrincipal } = payload;
return clientPrincipal;
}
(async () => {
console.log(await getUserInfo());
})();
Funkcje interfejsu API
Funkcje interfejsu API dostępne w usłudze Static Web Apps za pośrednictwem zaplecza usługi Azure Functions mają dostęp do tych samych informacji o użytkowniku co aplikacja kliencka, z wyjątkiem claims
tablicy. Interfejs API odbiera informacje umożliwiające identyfikację użytkownika, ale nie wykonuje własnych testów, czy użytkownik jest uwierzytelniony lub czy jest zgodny z wymaganą rolą. Reguły kontroli dostępu są definiowane staticwebapp.config.json
w pliku.
Dane podmiotu zabezpieczeń klienta są przekazywane do funkcji interfejsu API w nagłówku x-ms-client-principal
żądania. Dane podmiotu zabezpieczeń klienta są wysyłane jako ciąg zakodowany w formacie Base64 zawierający serializowany obiekt JSON.
Poniższa przykładowa funkcja pokazuje, jak odczytywać i zwracać informacje o użytkowniku.
module.exports = async function (context, req) {
const header = req.headers.get('x-ms-client-principal');
const encoded = Buffer.from(header, 'base64');
const decoded = encoded.toString('ascii');
context.res = {
body: {
clientPrincipal: JSON.parse(decoded),
},
};
};
Przy założeniu, że powyższa funkcja nosi nazwę user
, możesz użyć interfejsu API przeglądarki pobierania1 , aby uzyskać dostęp do odpowiedzi interfejsu API przy użyciu następującej składni.
async function getUser() {
const response = await fetch('/api/user');
const payload = await response.json();
const { clientPrincipal } = payload;
return clientPrincipal;
}
console.log(await getUser());
Gdy użytkownik jest zalogowany, x-ms-client-principal
nagłówek jest dodawany do żądań informacji o użytkowniku za pośrednictwem węzłów brzegowych usługi Static Web Apps.
Uwaga
x-ms-client-principal
Nagłówek dostępny w funkcji interfejsu API nie zawiera tablicyclaims
.
1 Interfejs API pobierania i operator await nie są obsługiwane w programie Internet Explorer.