2021-04-19 03:41:13 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Copyright (c) 2015-2021 MinIO, Inc.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This file is part of MinIO Object Storage stack
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This program is free software: you can redistribute it and/or modify
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// it under the terms of the GNU Affero General Public License as published by
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// the Free Software Foundation, either version 3 of the License, or
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// (at your option) any later version.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// This program is distributed in the hope that it will be useful
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// but WITHOUT ANY WARRANTY; without even the implied warranty of
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// GNU Affero General Public License for more details.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// You should have received a copy of the GNU Affero General Public License
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// along with this program.  If not, see <http://www.gnu.org/licenses/>.
  
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								package  cmd  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								import  (  
						 
					
						
							
								
									
										
										
										
											2019-10-01 05:05:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									"context" 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									"encoding/xml" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"net/http" 
							 
						 
					
						
							
								
									
										
										
										
											2019-07-03 13:34:32 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-06-02 05:59:40 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									xhttp  "github.com/minio/minio/internal/http" 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									"github.com/minio/minio/internal/logger" 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// writeSTSErrorRespone writes error headers
  
						 
					
						
							
								
									
										
										
										
											2020-05-22 00:09:18 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								func  writeSTSErrorResponse ( ctx  context . Context ,  w  http . ResponseWriter ,  isErrCodeSTS  bool ,  errCode  STSErrorCode ,  errCtxt  error )  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									var  err  STSError 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  isErrCodeSTS  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										err  =  stsErrCodes . ToSTSErr ( errCode ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  err . Code  ==  "InternalError"  ||  ! isErrCodeSTS  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-03-19 08:25:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										aerr  :=  getAPIError ( APIErrorCode ( errCode ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if  aerr . Code  !=  "InternalError"  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											err . Code  =  aerr . Code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											err . Description  =  aerr . Description 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											err . HTTPStatusCode  =  aerr . HTTPStatusCode 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									// Generate error response.
 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-01 05:05:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									stsErrorResponse  :=  STSErrorResponse { } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									stsErrorResponse . Error . Code  =  err . Code 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									stsErrorResponse . RequestID  =  w . Header ( ) . Get ( xhttp . AmzRequestID ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									stsErrorResponse . Error . Message  =  err . Description 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  errCtxt  !=  nil  { 
							 
						 
					
						
							
								
									
										
										
										
											2020-08-25 03:11:20 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										stsErrorResponse . Error . Message  =  errCtxt . Error ( ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-01 05:05:19 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 00:59:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									var  logKind  logger . Kind 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-12 09:50:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									switch  errCode  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									case  ErrSTSInternalError ,  ErrSTSNotInitialized : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										logKind  =  logger . Minio 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									default : 
							 
						 
					
						
							
								
									
										
										
										
											2020-05-19 00:59:45 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										logKind  =  logger . All 
							 
						 
					
						
							
								
									
										
										
										
											2019-10-12 09:50:54 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									logger . LogIf ( ctx ,  errCtxt ,  logKind ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									encodedErrorResponse  :=  encodeResponse ( stsErrorResponse ) 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-15 09:54:33 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									writeResponse ( w ,  err . HTTPStatusCode ,  encodedErrorResponse ,  mimeXML ) 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// STSError structure
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  STSError  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Code            string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Description     string 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									HTTPStatusCode  int 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// STSErrorResponse - error response format
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  STSErrorResponse  struct  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									XMLName  xml . Name  ` xml:"https://sts.amazonaws.com/doc/2011-06-15/ ErrorResponse" json:"-" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Error    struct  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Type     string  ` xml:"Type" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code     string  ` xml:"Code" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Message  string  ` xml:"Message" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									}  ` xml:"Error" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									RequestID  string  ` xml:"RequestId" ` 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// STSErrorCode type of error status.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								type  STSErrorCode  int  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-01 00:30:52 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								//go:generate stringer -type=STSErrorCode -trimprefix=Err $GOFILE
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// Error codes, non exhaustive list - http://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRoleWithSAML.html
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								const  (  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrSTSNone  STSErrorCode  =  iota 
							 
						 
					
						
							
								
									
										
										
										
											2019-02-28 09:46:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrSTSAccessDenied 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ErrSTSMissingParameter 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrSTSInvalidParameterValue 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-05 05:48:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrSTSWebIdentityExpiredToken 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ErrSTSClientGrantsExpiredToken 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrSTSInvalidClientGrantsToken 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrSTSMalformedPolicyDocument 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-08 10:03:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrSTSInsecureConnection 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrSTSInvalidClientCertificate 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ErrSTSNotInitialized 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-27 08:58:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrSTSUpstreamError 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ErrSTSInternalError 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								)  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2019-02-15 09:54:33 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								type  stsErrorCodeMap  map [ STSErrorCode ] STSError  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								func  ( e  stsErrorCodeMap )  ToSTSErr ( errCode  STSErrorCode )  STSError  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									apiErr ,  ok  :=  e [ errCode ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ! ok  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  e [ ErrSTSInternalError ] 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  apiErr 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// error code to STSError structure, these fields carry respective
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// descriptions for all the error responses.
  
						 
					
						
							
								
									
										
										
										
											2019-02-15 09:54:33 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								var  stsErrCodes  =  stsErrorCodeMap {  
						 
					
						
							
								
									
										
										
										
											2019-02-28 09:46:55 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrSTSAccessDenied :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "AccessDenied" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "Generating temporary credentials not allowed for this request." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusForbidden , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ErrSTSMissingParameter :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "MissingParameter" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "A required parameter for the specified action is not supplied." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrSTSInvalidParameterValue :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidParameterValue" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "An invalid or out-of-range value was supplied for the input parameter." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-05 05:48:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrSTSWebIdentityExpiredToken :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "ExpiredToken" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The web identity token that was passed is expired or is not valid. Get a new identity token from the identity provider and then retry the request." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ErrSTSClientGrantsExpiredToken :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "ExpiredToken" , 
							 
						 
					
						
							
								
									
										
										
										
											2019-01-05 05:48:12 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Description :     "The client grants that was passed is expired or is not valid. Get a new client grants token from the identity provider and then retry the request." , 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrSTSInvalidClientGrantsToken :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidClientGrantsToken" , 
							 
						 
					
						
							
								
									
										
										
										
											2019-04-10 02:39:42 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										Description :     "The client grants token that was passed could not be validated by MinIO." , 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrSTSMalformedPolicyDocument :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "MalformedPolicyDocument" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The request was rejected because the policy document was malformed." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2021-09-08 10:03:48 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrSTSInsecureConnection :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "InsecureConnection" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The request was made over a plain HTTP connection. A TLS connection is required." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ErrSTSInvalidClientCertificate :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "InvalidClientCertificate" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "The provided client certificate is invalid. Retry with a different certificate." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusBadRequest , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ErrSTSNotInitialized :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "STSNotInitialized" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "STS API not initialized, please try again." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusServiceUnavailable , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2022-05-27 08:58:09 +08:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ErrSTSUpstreamError :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "InternalError" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "An upstream service required for this operation failed - please try again or contact an administrator." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusInternalServerError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
									
										
										
										
											2018-10-10 05:00:01 +08:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									ErrSTSInternalError :  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Code :            "InternalError" , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Description :     "We encountered an internal error generating credentials, please try again." , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										HTTPStatusCode :  http . StatusInternalServerError , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}