Маркер доступа к единому входу Outlook отсутствует в заявке на получение электронной почты

#azure-active-directory #microsoft-graph-api #outlook-addin #office-addins

#azure-active-directory #microsoft-graph-api #outlook-надстройка #office-надстройки

Вопрос:

Я создаю надстройку Outlook и пытаюсь использовать токен доступа единого входа в качестве авторизации для своего серверной части.

У меня работает поток. Я запускаю свою надстройку, получаю токен доступа и использую токен доступа для «входа» в свой серверный сервер.

Однако проблема, с которой я сталкиваюсь, заключается в том, что я не получаю требование электронной почты в токене, несмотря на а) добавление его в разрешения API при регистрации приложения Azure, б) добавление в WebApplicationInfo. Должен ли я его получать?

Разрешения для регистрации приложений Azure

Регистрация приложения Azure

Информация о веб-приложении

 <WebApplicationInfo>
    <Id>xxx</Id>
    <Resource>api://localhost:3000/xxx</Resource>
    <Scopes>
        <Scope>openid</Scope>
        <Scope>User.Read</Scope>
        <Scope>profile</Scope>
        <Scope>email</Scope>
    </Scopes>
</WebApplicationInfo>
 

Код для получения маркера

OfficeRuntime.auth.getAccessToken( { allowSignInPrompt: true })

Получен токен

 {
  "aud": "api://localhost:3000/xxx",
  "iss": "https://sts.windows.net/my_tenant_id/",
  "iat": 1605992211,
  "nbf": 1605992211,
  "exp": 1605999711,
  "acr": "1",
  "aio": "E2RgYDDdzii4P/xP/cPTbg4lPk7dJ6c8aQnapLU19aiV Zy400sA",
  "amr": [
    "pwd"
  ],
  "appid": "xxx",
  "appidacr": "0",
  "family_name": "Adams",
  "given_name": "Iain",
  "ipaddr": "51.111.111.111",
  "name": "Iain Adams",
  "oid": "my_oid",
  "pwd_exp": "157262",
  "pwd_url": "https://portal.microsoftonline.com/ChangePassword.aspx",
  "rh": "0.AAAAmj9NLsNP80SAITLYeWEJg9YOWdOzUgJBrv-q0ikqsBxHANs.",
  "scp": "access_as_user",
  "sub": "my_sub",
  "tid": "my_tenant",
  "unique_name": "iain@abc.com",
  "upn": "iain@abc.com",
  "uti": "1KNbNttkDUCrKXblaK5BAA",
  "ver": "1.0"
}
 

Хотя я знаю, что адрес электронной почты возвращается в заявках upn и unique_name, И я знаю, что oid следует использовать в качестве уникального идентификатора для этого пользователя, однако мне нужно выполнить поиск на основе адреса электронной почты (если он существует).

Комментарии:

1. Значение «Email» является частью необязательных утверждений. Он включен по умолчанию, если пользователь является гостем в клиенте. Для управляемых пользователей (это означает, что пользователи внутри клиента), он должен быть запрошен через это необязательное утверждение или, только в версии 2.0, с областью OpenID. Для управляемых пользователей адрес электронной почты должен быть указан на портале администрирования Office ( portal.office.com/adminportal/home#/users )

2. У вас есть возможность изучить мой ответ? это вам помогает?

Ответ №1:

Необходимо настроить конфигурацию маркера доступа, а затем добавить электронное письмо в качестве необязательного утверждения. Перейдите на портал Azure> Регистрация приложений> ваше приложение> Конфигурация токена.

введите описание изображения здесь

Проанализируйте маркер:

введите описание изображения здесь

Необходимо обратить внимание на: для управляемых пользователей (пользователей внутри клиента) он должен быть запрошен через это необязательное утверждение или, только в версии 2.0, с областью OpenID.

См.: Документ.

Ответ №2:

Значение «Email» является частью необязательных утверждений. Он включен по умолчанию, если пользователь является гостем в клиенте. Для управляемых пользователей (это означает, что пользователи внутри клиента), он должен быть запрошен через это необязательное утверждение или, только в версии 2.0, с областью OpenID. Для управляемых пользователей адрес электронной почты должен быть указан на портале администрирования Office (https://portal.office.com/adminportal/home#/users ).