2017-11-22 1 views
0

Im Refresh_Token-Szenario (REFRESH_TOKEN_AUTH AuthFlow) scheint AWS Cognito API den Wert zu ignorieren, der für das Feld USERNAME übergeben wurde. Die Validierung scheint sich auf eine E-Mail-Regex-Analyse zu beschränken. d. h. API darf Zugriffstoken für jeden USERNAME wie z. B. [email protected] mit einem Aktualisierungs-Token von [email protected] abrufen.aws cognito Refresh-Token validiert den Benutzernamen nicht

Szenario: Login Cognito:

response = boto3_client.admin_initiate_auth(
      UserPoolId=POOL_ID, 
      AuthFlow='ADMIN_NO_SRP_AUTH', 
      AuthParameters={ 
       'USERNAME': username, 
       'PASSWORD': password, 
      }, 
      ClientId=CLIENT_ID, 
     ) 

Refresh Anruf
Verwenden der Login-Antwort-Token aktualisieren, versuchen, eine Aktualisierung für einen anderen Benutzer, API kehrte nicht zurück einen Fehler.

response = boto3_client.admin_initiate_auth(
      UserPoolId=POOL_ID, 
      AuthFlow='REFRESH_TOKEN_AUTH', 
      AuthParameters={ 
       'USERNAME': username, #===== different user 
       'REFRESH_TOKEN': refresh_token, 
      }, 
      ClientId=CLIENT_ID, 
     ) 

Wird dies in ADMIN_NO_SRP_AUTH Flow erwartet? oder ein Fehler in Cognito API?

+0

Definitiv nicht erwartet. Wenn dies bestätigt wird, heben Sie ein Ticket für das AWS-Team an, da dies ein Sicherheitsproblem darstellt. – agent420

Antwort

0

Im Aktualisierungs-Token-Fluss ist der Benutzername kein erforderlicher Parameter, da das Aktualisierungs-Token direkt mit dem angegebenen Benutzer verknüpft werden kann, der das Token an erster Stelle ausgegeben hat. Sie können dieses Verhalten testen, indem Sie beispielsweise die AWS-CLI verwenden und nur das Aktualisierungstoken übergeben.

+0

Haben Sie eine Quelle, auf die Sie sich bezogen haben? Wenn ich http://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html betrachte, sehe ich 'Für REFRESH_TOKEN_AUTH/REFRESH_TOKEN: USERNAME (erforderlich), SECRET_HASH (erforderlich, wenn die App Client ist mit einem Client-Secret konfiguriert), REFRESH_TOKEN (erforderlich), DEVICE_KEY '... dh der USERNAME ist erforderlich, was mit Ihrer Antwort in Konflikt steht. – Elliveny

+0

Ich erwähnte, dass dies über das CLI getestet werden kann. Ich werde eine interne Anfrage stellen, um die Dokumentation zu aktualisieren. –

+0

Ich habe es versucht und stimme zu; Der USERNAME wird nicht benötigt, daher scheint die Dokumentation beachtet zu werden. – Elliveny