Получение электронной почты пользователя, подключенного к службе приложений Azure с помощью Microsoft Identity.

Как мы можем получить электронную почту пользователя, подключенного к службе приложений Azure с помощью Microsoft Identity?

Наш интерфейс построен на основе React, а серверная часть построена на основе Node.js.

Спасибо, Кристоф

1 ответ

Наконец, достаточно было позвонить в /.auth/me Конечная точка REST для получения утверждений пользователей из данных ответа.

      import axios from "axios";

const _ = require("lodash");

export function hasRoleReaders(userDetails) {
    return hasRole(userDetails, "readers");
}

export function hasRoleWriters(userDetails) {
    return hasRole(userDetails, "writers");
}

function hasRole(userDetails, expectation) {
    const found = _.find(userDetails.roles, function (role) {
        return role.val === expectation;
    });

    return found !== undefined;
}

export async function getUserDetails() {
    return axios.get("/.auth/me")
                .then(response => {
                    const datum = response.data[0];

                    const userId = datum.user_id;
                    const userClaims = datum.user_claims;
                    const name = _.find(userClaims, function (userClaim) {
                        return userClaim["typ"] === "name";
                    });
                    const roles = _.filter(userClaims, function (userClaim) {
                        return userClaim["typ"] === "roles";
                    });

                    return {
                        "userId": userId,
                        "name": name,
                        "userClaims": userClaims,
                        "roles": roles
                    };
                })
                .catch(reason => {
                    console.log(reason);

                    return {
                        "userId": "na",
                        "name": "na",
                        "userClaims": [],
                        "roles": []
                    };
                });
}
Другие вопросы по тегам