src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

doc.go (3357B)


      1 // Package ssocreds provides a credential provider for retrieving temporary AWS
      2 // credentials using an SSO access token.
      3 //
      4 // IMPORTANT: The provider in this package does not initiate or perform the AWS
      5 // SSO login flow. The SDK provider expects that you have already performed the
      6 // SSO login flow using AWS CLI using the "aws sso login" command, or by some
      7 // other mechanism. The provider must find a valid non-expired access token for
      8 // the AWS SSO user portal URL in ~/.aws/sso/cache. If a cached token is not
      9 // found, it is expired, or the file is malformed an error will be returned.
     10 //
     11 // # Loading AWS SSO credentials with the AWS shared configuration file
     12 //
     13 // You can use configure AWS SSO credentials from the AWS shared configuration file by
     14 // specifying the required keys in the profile and referencing an sso-session:
     15 //
     16 //	sso_session
     17 //	sso_account_id
     18 //	sso_role_name
     19 //
     20 // For example, the following defines a profile "devsso" and specifies the AWS
     21 // SSO parameters that defines the target account, role, sign-on portal, and
     22 // the region where the user portal is located. Note: all SSO arguments must be
     23 // provided, or an error will be returned.
     24 //
     25 //	[profile devsso]
     26 //	sso_session = dev-session
     27 //	sso_role_name = SSOReadOnlyRole
     28 //	sso_account_id = 123456789012
     29 //
     30 //	[sso-session dev-session]
     31 //	sso_start_url = https://my-sso-portal.awsapps.com/start
     32 //	sso_region = us-east-1
     33 //	sso_registration_scopes = sso:account:access
     34 //
     35 // Using the config module, you can load the AWS SDK shared configuration, and
     36 // specify that this profile be used to retrieve credentials. For example:
     37 //
     38 //	config, err := config.LoadDefaultConfig(context.TODO(), config.WithSharedConfigProfile("devsso"))
     39 //	if err != nil {
     40 //	    return err
     41 //	}
     42 //
     43 // # Programmatically loading AWS SSO credentials directly
     44 //
     45 // You can programmatically construct the AWS SSO Provider in your application,
     46 // and provide the necessary information to load and retrieve temporary
     47 // credentials using an access token from ~/.aws/sso/cache.
     48 //
     49 //	ssoClient := sso.NewFromConfig(cfg)
     50 //	ssoOidcClient := ssooidc.NewFromConfig(cfg)
     51 //	tokenPath, err := ssocreds.StandardCachedTokenFilepath("dev-session")
     52 //	if err != nil {
     53 //	    return err
     54 //	}
     55 //
     56 //	var provider aws.CredentialsProvider
     57 //	provider = ssocreds.New(ssoClient, "123456789012", "SSOReadOnlyRole", "https://my-sso-portal.awsapps.com/start", func(options *ssocreds.Options) {
     58 //	  options.SSOTokenProvider = ssocreds.NewSSOTokenProvider(ssoOidcClient, tokenPath)
     59 //	})
     60 //
     61 //	// Wrap the provider with aws.CredentialsCache to cache the credentials until their expire time
     62 //	provider = aws.NewCredentialsCache(provider)
     63 //
     64 //	credentials, err := provider.Retrieve(context.TODO())
     65 //	if err != nil {
     66 //	    return err
     67 //	}
     68 //
     69 // It is important that you wrap the Provider with aws.CredentialsCache if you
     70 // are programmatically constructing the provider directly. This prevents your
     71 // application from accessing the cached access token and requesting new
     72 // credentials each time the credentials are used.
     73 //
     74 // # Additional Resources
     75 //
     76 // Configuring the AWS CLI to use AWS Single Sign-On:
     77 // https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html
     78 //
     79 // AWS Single Sign-On User Guide:
     80 // https://docs.aws.amazon.com/singlesignon/latest/userguide/what-is.html
     81 package ssocreds