#azure-active-directory #microsoft-graph-api #outlook-addin #office-addins
#azure-active-directory #microsoft-graph-api #outlook-надстройка #office-надстройки
Вопрос:
Я создаю надстройку Outlook и пытаюсь использовать токен доступа единого входа в качестве авторизации для своего серверной части.
У меня работает поток. Я запускаю свою надстройку, получаю токен доступа и использую токен доступа для «входа» в свой серверный сервер.
Однако проблема, с которой я сталкиваюсь, заключается в том, что я не получаю требование электронной почты в токене, несмотря на а) добавление его в разрешения API при регистрации приложения Azure, б) добавление в WebApplicationInfo. Должен ли я его получать?
Разрешения для регистрации приложений 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 ).