6

Ich möchte temporäre Anmeldedaten für vorhandene Benutzer ausgeben, um ihnen Zugriff auf die AWS Management Console zu gewähren, indem Sie ihnen eine mit diesen temporären URLs bereitstellen Referenzen.Temporäre Anmeldedaten für die Anmeldung in der AWS Management Console mithilfe von AssumeRole, vorhandenen Richtlinien und eindeutiger URL

verfolge ich mit einem schriftlichen Beispiel gegeben durch AWS Dokumentation zusammen: Example Code Using IAM Query APIs

ich den folgenden Code geschrieben haben, die keine Fehler geben, wenn die Ausführung, und scheint eine Session-Token zurück, die es ermöglichen soll mich dann richtig eine URL bilden sich anmelden

Hier ist der Code Session-Token und anschließend URL zurückzukehren.

$accessKeyId = 'accesskeyId' 
$secretAccessKey = 'secretaccessKey' 
$region = 'us-east-1' 

Set-AWSCredentials -AccessKey $accessKeyId -SecretKey $secretAccessKey 

$role = Use-STSRole -RoleSessionName "testSTS" -RoleArn "arn:aws:iam::1234567890:role/adminAccess" -DurationInSeconds 900 

$jsonSession = @" 
{ 
    "sessionId": $([string]::Format("{0}", $role.Credentials.AccessKeyId)), 
    "sessionKey": $([string]::Format("{0}", $role.Credentials.SecretAccessKey)), 
    "sessionToken": $([string]::Format("{0}", $role.Credentials.SessionToken)) 
} 
"@ 

Add-Type -AssemblyName System.Web 
$Encode = [System.Web.HttpUtility]::UrlEncode($jsonSession) 

$url = $([string]::Format("https://signin.aws.amazon.com/federation?Action=getSigninToken&Session={0}", $Encode)) 

$payload = Invoke-WebRequest -Uri $url | ConvertFrom-Json 

$issuer = [System.Web.HttpUtility]::UrlEncode("https://1234567890.signin.aws.amazon.com") 
$destination = [System.Web.HttpUtility]::UrlEncode("https://console.aws.amazon.com") 
$signintoken = [System.Web.HttpUtility]::UrlEncode($payload.SigninToken) 

$signInUrl = $([string]::Format("https://signin.aws.amazon.com/federation?Action=login&Issuer={0}&Destination={1}&SigninToken={2}", $issuer, $destination, $signintoken)) 

write-host $signInUrl 

Leider, wenn ich die URL in Web-Browser besuchen erhalte ich die followi ng Fehler "Amazon Web Services Anmelden: Die Anmeldedaten in Ihrem Login-Link waren ungültig. Bitte kontaktieren Sie Ihren Administrator „

Dies ist, was die URL zu mir zurück aussieht, offensichtlich habe ich die accountid und echte Session-Token aus Sicherheitsgründen geändert:.

https://signin.aws.amazon.com/federation?Action=login&Issuer=https%3a%2f%2f1234567890.signin.aws.amazon.com&Destination=https%3a%2f%2fconsole.aws.amazon.com&SigninToken=ygQQrk4MYJyX1k30Obmj8p3Clax5OaUzQbjIBQH-ADCYP5QHNj2rsBz4ATlHrHqIJlzoAqyPrd_5OC4fo-BNHGKJkfasfkjz4C4hZnfYH-VmmcHIY8Fan0m38SnxwCome8DZHLe-_8igsGmCWKKTAVen_lp5wA0mUuGIgg9TqPIlb5SNPOVY00oc3dEGZnahcBlOJAmN7DWuv3P61EVipF5w2eoSGIdCyPkhZ2vvFD8orN_UJ4nLogkTAf5rvme1cavj6sqmRUS8iOTyEj8a5mLrmWww__p_J3z4aN4U_qEr3SIi9tCmQMCPB6ktaN_-dMIvJMrx23C11KjCyqixHnFxn60MOBH22bmY-6OFOucA

zusätzlich die Anmeldeinformationen und sittytoken, die mir übergeben wurden, scheinen zu funktionieren, wenn sie verwendet werden, um einen API-Befehl auszugeben, wie in dem folgenden Code gezeigt:

Aktualisiert: Ich habe versucht, den "Issuer" -Parameter zu entfernen, da der Artikel unten als optional aufgeführt ist. Ich habe auch versucht, "SessionType" zur ursprünglichen URL hinzuzufügen, um sessiontoken anzufordern, und die signin-URL schlägt immer noch mit demselben Fehler fehl.

+0

Sie können einen Blick auf diese AWS Forum Post nehmen wollen: https://forums.aws.amazon.com/thread.jspa?messageID=475106 –

+0

Dank für die Antwort .. Dieser Artikel ist für föderierte Token und ich suche nach AssumeRole. Es wurde jedoch erwähnt, dass der Parameter "issuer" optional ist und außerdem einen Parameter "SessionType" für die Anforderung der ursprünglichen Sitzungstoken enthielt. Ich habe beides versucht und es ist immer noch mit demselben Fehler gescheitert. = / –

Antwort

2

Ich fand die Antwort, und es stellte sich leider heraus, dass nichts zu aufregend war!

Es scheint, dass der anstößige Code in dem Abschnitt war, der die JSON-Sitzungszeichenfolge erstellt, die Sie für den Austausch eines Anmeldungs-Tokens verwenden.

Ich habe umgebende doppelte Anführungszeichen "" für das Schlüsselwertpaar vermisst.

Hier ist der aktualisierte Teil dieses Codes für alle anderen, die versuchen, dies zum Funktionieren zu bringen!

$jsonSession = @" 
{"sessionId": $([string]::Format('"{0}"', $role.Credentials.AccessKeyId)), 
"sessionKey": $([string]::Format('"{0}"', $role.Credentials.SecretAccessKey)), 
"sessionToken": $([string]::Format('"{0}"', $role.Credentials.SessionToken))} 
"@ 
Verwandte Themen