6

का उपयोग कर एडब्ल्यूएस प्रबंधन कंसोल में साइन इन करने के लिए अस्थायी प्रमाण-पत्र जारी करना मैं मौजूदा उपयोगकर्ताओं को अस्थायी प्रमाण-पत्र जारी करना चाहता हूं, ताकि उन्हें इन अस्थायी रूप से बनाए गए यूआरएल प्रदान करके एडब्ल्यूएस प्रबंधन कंसोल तक पहुंचने की अनुमति मिल सके। साख।AssumeRole, मौजूदा नीतियों और अद्वितीय यूआरएल

मैं एडब्ल्यूएस प्रलेखन के माध्यम से दिया एक प्रश्न के लिखित उदाहरण के साथ अनुसरण कर रही हूं: Example Code Using IAM Query APIs

मैं निम्नलिखित कोड है, जब क्रियान्वित जो यह नहीं है कि किसी भी त्रुटि दे लिखा है, और जो की अनुमति चाहिए, एक सत्र टोकन वापस जाने के लिए प्रतीत होता है मुझे तो ठीक से प्रवेश करने के लिए एक यूआरएल के रूप में

यहाँ सत्र टोकन और बाद में यूआरएल वापस जाने के लिए कोड है:।

$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 

दुर्भाग्य से जब मैं वेब ब्राउज़र में यूआरऍल मैं followi मिल एनजी त्रुटि "अमेज़ॅन वेब सेवा साइन इन: आपके लॉगिन लिंक में प्रमाण-पत्र अमान्य थे। अपने व्यवस्थापक से संपर्क करें "

यह वही यूआरएल मेरे लिए लौट आए, की तरह दिखता है स्पष्ट रूप से मैं ACCOUNTID और सुरक्षा कारणों के लिए वास्तविक सत्र टोकन बदल गया है है:।

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

इसके अतिरिक्त मुझे नीचे दिए गए कोड में दिखाए गए एपीआई कमांड को जारी करने के लिए उनका उपयोग करते समय क्रेडेंशियल्स और सत्रटोकन का उपयोग करना प्रतीत होता है:

$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 

$newAccessKeyId = $role.Credentials.AccessKeyId 
$newSecretKey = $role.Credentials.SecretAccessKey 
$newSessionToken = $role.Credentials.SessionToken 

Set-AWSCredentials -AccessKey $newAccessKeyId -SecretKey $newSecretKey -SessionToken $newSessionToken 

$secgroups = Get-EC2SecurityGroup 

अपडेटेडः मैंने "जारीकर्ता" पैरामीटर को हटाने का प्रयास किया जैसा कि नीचे सूचीबद्ध आलेख को वैकल्पिक के रूप में सूचीबद्ध किया गया है। मैंने sessiontoken का अनुरोध करने के लिए मूल यूआरएल में "सत्र टाइप" जोड़ने का भी प्रयास किया, और साइनइन यूआरएल अभी भी एक ही त्रुटि के साथ विफल रहता है।

+0

आप इस एडब्ल्यूएस मंच पोस्ट पर एक नज़र लेने के लिए चाहते हो सकता है: https://forums.aws.amazon.com/thread.jspa?messageID=475106 –

+0

प्रतिक्रिया के लिए धन्यवाद .. यही कारण है कि लेख फ़ेडरेटेड टोकन है , और मैं AssumeRole का उपयोग करने के लिए देख रहा हूँ। हालांकि, इसने उल्लेख किया कि "जारीकर्ता" पैरामीटर वैकल्पिक है, और मूल सत्र टोकन अनुरोध के लिए इसमें "सत्र प्रकार" पैरामीटर भी था। मैंने इन दोनों की कोशिश की और यह अभी भी एक ही त्रुटि के साथ विफल रहा। = / –

उत्तर

2

मुझे जवाब मिला, और दुर्भाग्यवश यह रोमांचक होने के लिए कुछ भी नहीं निकला!

ऐसा लगता है कि अपमानजनक कोड उस हिस्से में था जो JSON सत्र स्ट्रिंग बनाता है जिसे आप साइन-इन टोकन के आदान-प्रदान के लिए उपयोग करते हैं।

मैं कुंजी मूल्य जोड़ी के लिए आसपास के दोहरे उद्धरण चिह्नों को याद कर रहा था।

यहां कोड के अपडेट किए गए हिस्से को किसी और के लिए काम करने की कोशिश करने का प्रयास किया गया है!

$jsonSession = @" 
{"sessionId": $([string]::Format('"{0}"', $role.Credentials.AccessKeyId)), 
"sessionKey": $([string]::Format('"{0}"', $role.Credentials.SecretAccessKey)), 
"sessionToken": $([string]::Format('"{0}"', $role.Credentials.SessionToken))} 
"@ 
संबंधित मुद्दे