Usurpation d’identité utilisateur
Imaginez Sarah, une ingénieure de support chez TechCorp, qui reçoit un ticket urgent d'Alex, un client qui ne peut pas accéder à une ressource critique. Pour diagnostiquer et résoudre efficacement le problème, Sarah doit voir exactement ce qu'Alex voit dans le système. C'est là que la fonctionnalité d'usurpation d’identité utilisateur de Logto est utile.
L'usurpation d’identité utilisateur permet aux utilisateurs autorisés comme Sarah d'agir temporairement au nom d'autres utilisateurs comme Alex au sein du système. Cette fonctionnalité puissante est inestimable pour le dépannage, le support client et l'exécution de tâches administratives.
Comment ça fonctionne ?
Le processus d'usurpation implique trois étapes principales :
- Sarah demande l'usurpation via le serveur backend de TechCorp
- Le serveur de TechCorp obtient un jeton de sujet de Logto Management API
- L'application de Sarah échange ce jeton de sujet contre un jeton d’accès
Voyons comment Sarah peut utiliser cette fonctionnalité pour aider Alex.
Étape 1 : Demande d'usurpation
Tout d'abord, l'application de support de Sarah doit demander l'usurpation au serveur backend de TechCorp.
Demande (application de Sarah au serveur de TechCorp)
POST /api/request-impersonation HTTP/1.1
Host: api.techcorp.com
Authorization: Bearer <Sarah's_access_token>
Content-Type: application/json
{
"userId": "alex123",
"reason": "Investigating resource access issue",
"ticketId": "TECH-1234"
}
Dans cette API, le backend doit effectuer des vérifications d'autorisation appropriées pour s'assurer que Sarah a les Permissions nécessaires pour usurper l'identité d'Alex.
Étape 2 : Obtention d'un jeton de sujet
Le serveur de TechCorp, après avoir validé la demande de Sarah, appellera ensuite le Management API de Logto pour obtenir un jeton de sujet.
Demande (serveur de TechCorp à Logto Management API)
POST /api/subject-tokens HTTP/1.1
Host: techcorp.logto.app
Authorization: Bearer <TechCorp_m2m_access_token>
Content-Type: application/json
{
"userId": "alex123",
"context": {
"ticketId": "TECH-1234",
"reason": "Resource access issue",
"supportEngineerId": "sarah789"
}
}
Réponse (Logto au serveur de TechCorp)
{
"subjectToken": "sub_7h32jf8sK3j2",
"expiresIn": 600
}
Le serveur de TechCorp doit ensuite retourner ce jeton de sujet à l'application de Sarah.
Réponse (serveur de TechCorp à l'application de Sarah)
{
"subjectToken": "sub_7h32jf8sK3j2",
"expiresIn": 600
}