J'ai un problème d'authentification de la requête CORS dans Chrome.xhr.withCredentials = true; ne fonctionne pas en chrome
J'ai une application page unique s'exécutant sur localhost et webservices fonctionnant dans Azure. Je me connecte en utilisant OpenIdConnect.
Quand je demande CORS en EDGE à mon back-end comme celui-ci, l'authentification fonctionne:
$.ajax({
type: 'get',
url: buildBackendUrl("api/Account"),
xhrFields: { withCredentials: true }
});
mais le même ne fonctionne pas dans Chrome. Lorsque je saisis l'URL du service web pour naviguer manuellement, la requête est authentifiée.
J'ai examiné les en-têtes de demande de la demande CORS et la différence est dans les cookies:
- bord:
ARRAfinity=...; AspNetCore.Cookies=...
- Chrome:
ARRAfinity=...
Pourquoi Chrome ne comprend pas tous les cookies?
EDIT: voici demande attrapée par Fiddler:
- REDIRECT quand je presse connexion:
myapp.azurewebsites.net/api/Account/login?returnUrl=http://localhost:46563/
- Depuis que je suis déjà connecté pas besoin d'aller à la page de connexion. Rediriger
myapp.azurewebsites.net/signin-oidc
- RETOUR REDIRECT:
localhost:46563/
- CORS fabriqués à partir Localhost:
myapp-dev.azurewebsites.net/api/Account
Dans aucun des deux, RN3 demande ou 4 Je ne vois pas les cookies.
Quoi qu'il en soit, la réponse de nr2 demande (myapp.azurewebsites.net/signin-oidc
) tente de cookies ensembles:
HTTP/1.1 302 Found
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 0
Expires: -1
Location: http://localhost:46563/
Set-Cookie: .AspNetCore.Correlation.OpenIdConnect.3ifhkwCQkMuZkTgBxYiKMOSoLgTX2nIex-8aH-syh5Q=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/signin-oidc; samesite=lax
Set-Cookie: .AspNetCore.OpenIdConnect.Nonce.CfDJ8FG-d2csck1FsQu2pwqnsxLd4w9YWobqchk1w3xMgy7bCX_KilCuRxuj4U0bSTAL-dD_iwdEaZI6pclqlP-3f7QBuKUMS379DFiBPd_tkEkyB_IYVWzJsR1xtw-_qcS1pQL6ial_C2ywbSwRucBxUqtDPMcuFEIomNDDnklpqWUmS_5Xb_tB23Ew7b14M861pL1CtJ18uPqgu-nOgn1RygqhBhMECoQfQ7YhXN_BtfiIbdPfw00jWNfMVc5G1B-SnT_eq80_RmxQ4_JOX3ZJfiI=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/signin-oidc; samesite=lax
Set-Cookie: .AspNetCore.Cookies=...; path=/; samesite=lax; httponly
plutôt impossible de dire avec ces courts extraits ... Je suppose que vous avez d'abord vérifié si ces cookies sont _SET_ dans Chrome pour commencer? – CBroe
Donc, pour être clair, il s'agit de l'ensemble de cookies pour le domaine 'localhost', et vous vous attendez à ce que ce soit envoyé - quand exactement, où? – CBroe
J'ai vérifié que les cookies tiers de chrome sont autorisés dans les paramètres de chrome. Je m'attends à envoyer '.AspNetCore.Cookies = ...' avec la requête faite depuis localhost vers 'myapp.azurewebsites.net/api/Account'. Cependant, je ne suis pas sûr à 100% d'où proviennent ces cookies. Je suppose que les sont générés par myapp.azurewebsites.net/signin-oidc et défini sur localhost – Liero