Все, что я хочу, - это возможность получать электронные письма из Hotmail, я думал, что это будет очень легко.
Я был исследован о том, как получать электронные письма из Hotmail через OAuth, и теперь я зашел в тупик .
Вот моя предпочтительная архитектура:
Что я знаю сейчас:
- I мне нужно использовать Microsoft Graph для получения электронных писем пользователя
- Мне нужно использовать поток OBO (от имени) в моем проекте WebApi для запроса токена доступа и выполнения операций
Там будет 2 проекты:
1 WebApi для обработки писем, полученных из Hotmail, Gmail et c. 1 WebApp SPA (React. js) для веб-интерфейса
Я в основном просмотрел все соответствующие документы Microsoft (например, Microsoft Identity Platform, MSAL. NET) и нашел эти 2 демонстрационных проекта, которые, по моему мнению, связаны между собой. в мой проект:
- WebApp вызывает WebApi для получения информации о пользователе. WebApi вызывает Microsoft Graph для получения электронных писем из веб-приложения Hotmail
- SPA (JavaScript) для вызова Microsoft Graph
На SPA, когда я запустил его демонстрационный проект (я заменил идентификатор приложения в конфигурациях), я обнаружил, что демонстрационный проект работает только в Edge (работают только пользовательские части входа), он даже не работает в Firefox.
Я искал сообщение об ошибке, но не получилось.
У меня закончились идеи, как заставить работать мое решение.
Обновление 1:
Я пытался использовать эту реакцию + Asp . Net Базовый проект в качестве примеров. У меня есть и asp. net webapi runnint, и Reactjs запуск внешнего интерфейса: Но приложение reactjs всегда показывает это:
Вот URL в адресная строка для приложения Reactjs:
https://login.microsoftonline.com/02xxxxxxx/oauth2/authorize?response_type=id_token&client_id=02xxxx&redirect_uri=https%3A%2F%2Flocalhost%3A3000&state=3b3e49f5-3fff-4249-b3ee-e4f28a87b3dd&client-request-id=2063333f-7dab-4afe-9922-4fe2909ccf37&x-client-SKU=Js&x-client-Ver=1.0.17&nonce=51c7f91f-1c87-4d4b-808b-082433370b39
Вот манифесты для My Asp. Net Базовый WebApi (Papayee) и Reactjs клиент (PapayeeClient)
Papayee:
{
"id": "22xxxx",
"acceptMappedClaims": null,
"accessTokenAcceptedVersion": 2,
"addIns": [],
"allowPublicClient": false,
"appId": "28xxx12",
"appRoles": [],
"oauth2AllowUrlPathMatching": true,
"createdDateTime": "2020-04-03T03:59:12Z",
"groupMembershipClaims": null,
"identifierUris": [
"https://papayee008.onmicrosoft.com/papayee008"
],
"informationalUrls": {
"termsOfService": null,
"support": null,
"privacy": null,
"marketing": null
},
"keyCredentials": [],
"knownClientApplications": [],
"logoUrl": null,
"logoutUrl": "https://localhost:44321/signout-oidc",
"name": "Papayee",
"oauth2AllowIdTokenImplicitFlow": true,
"oauth2AllowImplicitFlow": true,
"oauth2Permissions": [
{
"adminConsentDescription": "Allow Papayee to access user's emails for filtering billing emails",
"adminConsentDisplayName": "Papayee User Impersonation",
"id": "20xxx7a",
"isEnabled": true,
"lang": null,
"origin": "Application",
"type": "User",
"userConsentDescription": "Allow Papayee to access user's emails for filtering billing emails",
"userConsentDisplayName": "Papayee",
"value": "user_impersonation"
},
{
"adminConsentDescription": "This is used to retrieve your emails and find your bills",
"adminConsentDisplayName": "Access Papayee as a user",
"id": "98xxx15a",
"isEnabled": true,
"lang": null,
"origin": "Application",
"type": "User",
"userConsentDescription": "This is used to retrieve your emails and find your bills",
"userConsentDisplayName": "Access Papayee as a user",
"value": "access_as_user"
}
],
"oauth2RequirePostResponse": false,
"optionalClaims": {
"idToken": [],
"accessToken": [],
"saml2Token": []
},
"orgRestrictions": [],
"parentalControlSettings": {
"countriesBlockedForMinors": [],
"legalAgeGroupRule": "Allow"
},
"passwordCredentials": [
{
"customKeyIdentifier": null,
"endDate": "2021-04-03T06:44:48.449Z",
"keyId": "c0xxx110",
"startDate": "2020-04-03T06:45:01.778Z",
"value": null,
"createdOn": "2020-04-03T06:45:10.0053885Z",
"hint": "7uu",
"displayName": "papayee"
}
],
"preAuthorizedApplications": [],
"publisherDomain": "papayee008.onmicrosoft.com",
"replyUrlsWithType": [
{
"url": "https://localhost:3000",
"type": "Web"
},
{
"url": "https://localhost:44302/",
"type": "Web"
},
{
"url": "https://localhost:44302/signin-oidc",
"type": "Web"
},
{
"url": "https://localhost:44351",
"type": "Web"
},
{
"url": "http://localhost:5000/",
"type": "Web"
},
{
"url": "https://localhost:5001/",
"type": "Web"
},
{
"url": "https://localhost:8666",
"type": "Web"
},
{
"url": "https://localhost:44394/",
"type": "InstalledClient"
},
{
"url": "https://login.microsoftonline.com/common/oauth2/nativeclient",
"type": "InstalledClient"
},
{
"url": "https://localhost",
"type": "Web"
},
{
"url": "https://localhost:44394/signin-oidc",
"type": "Web"
},
{
"url": "https://localhost:44394",
"type": "Web"
}
],
"requiredResourceAccess": [
{
"resourceAppId": "28xxxx12",
"resourceAccess": [
{
"id": "98xxxx5a",
"type": "Scope"
},
{
"id": "20xxxx7a",
"type": "Scope"
}
]
},
{
"resourceAppId": "0fxxxxa0",
"resourceAccess": [
{
"id": "1fxxx6a",
"type": "Scope"
}
]
},
{
"resourceAppId": "00xxx00",
"resourceAccess": [
{
"id": "18xxx10",
"type": "Scope"
},
{
"id": "3bxxxd5",
"type": "Scope"
}
]
},
{
"resourceAppId": "00xxx00",
"resourceAccess": [
{
"id": "64xxxd0",
"type": "Scope"
},
{
"id": "74xxx82",
"type": "Scope"
},
{
"id": "37xxx6e",
"type": "Scope"
},
{
"id": "14xxxc1",
"type": "Scope"
},
{
"id": "5cxxx65",
"type": "Scope"
},
{
"id": "57xxxca",
"type": "Scope"
},
{
"id": "02xxx73",
"type": "Scope"
},
{
"id": "e1xxxx3d",
"type": "Scope"
},
{
"id": "b4xxx4c",
"type": "Scope"
}
]
}
],
"samlMetadataUrl": null,
"signInUrl": null,
"signInAudience": "AzureADandPersonalMicrosoftAccount",
"tags": [],
"tokenEncryptionKeyId": null
}
А вот и манифест для PapayeeClient
{
"id": "59xxxxe9",
"acceptMappedClaims": null,
"accessTokenAcceptedVersion": 2,
"addIns": [],
"allowPublicClient": null,
"appId": "02xxx60",
"appRoles": [],
"oauth2AllowUrlPathMatching": false,
"createdDateTime": "2020-04-13T22:34:14Z",
"groupMembershipClaims": null,
"identifierUris": [],
"informationalUrls": {
"termsOfService": null,
"support": null,
"privacy": null,
"marketing": null
},
"keyCredentials": [],
"knownClientApplications": [],
"logoUrl": null,
"logoutUrl": null,
"name": "PapayeeClient",
"oauth2AllowIdTokenImplicitFlow": true,
"oauth2AllowImplicitFlow": true,
"oauth2Permissions": [],
"oauth2RequirePostResponse": false,
"optionalClaims": null,
"orgRestrictions": [],
"parentalControlSettings": {
"countriesBlockedForMinors": [],
"legalAgeGroupRule": "Allow"
},
"passwordCredentials": [],
"preAuthorizedApplications": [],
"publisherDomain": "papayee008.onmicrosoft.com",
"replyUrlsWithType": [
{
"url": "https://localhost:3000/",
"type": "Web"
},
{
"url": "https://localhost:8080/",
"type": "Web"
}
],
"requiredResourceAccess": [
{
"resourceAppId": "28xxx12",
"resourceAccess": [
{
"id": "98xxx5a",
"type": "Scope"
},
{
"id": "20xxx7a",
"type": "Scope"
}
]
},
{
"resourceAppId": "00xxx00",
"resourceAccess": [
{
"id": "64xxxd0",
"type": "Scope"
},
{
"id": "74xxx82",
"type": "Scope"
},
{
"id": "37xxxx6e",
"type": "Scope"
},
{
"id": "14xxxc1",
"type": "Scope"
},
{
"id": "57xxxxca",
"type": "Scope"
},
{
"id": "02xxx73",
"type": "Scope"
},
{
"id": "e1xxxxx3d",
"type": "Scope"
}
]
}
],
"samlMetadataUrl": null,
"signInUrl": null,
"signInAudience": "AzureADandPersonalMicrosoftAccount",
"tags": [],
"tokenEncryptionKeyId": null
}