pub fn new(
        sts_client: StsClient,
        wif_token: String,
        wif_provider: Option<String>,
        role_arn: String,
        session_name: String,
        session_duration: Option<Duration>,
        scope_down_policy: Option<String>,
    ) -> StsWebIdentityFederationSessionCredentialsProvider {
        StsWebIdentityFederationSessionCredentialsProvider {
            sts_client: Box::new(sts_client),
            wif_token,
            wif_provider,
            role_arn,
            session_name,
            session_duration: session_duration
                .unwrap_or(Duration::seconds(DEFAULT_DURATION_SECONDS as i64)),
            scope_down_policy,
        }
    }
Creates a new `StsWebIdentityFederationSessionCredentialsProvider` with the given
[StsClient](struct.StsClient.html) and session parameters.

* `sts_client` - The [StsClient](struct.StsClient.html) to use to acquire session tokens.
* `wif_token` - The OAuth 2.0 access token or OpenID Connect ID token that is provided by the identity provider.
* `wif_provider` - The fully qualified host component of the domain name of the identity provider. Only for OAuth 2.0 access tokens. Do not include URL schemes and port numbers.
* `role_arn` - The ARN of the role to assume.
* `session_name` - An identifier for the assumed role session. Minimum length of 2. Maximum length of 64. Pattern: `[\w+=,.@-]*`
* `session_duration` - Duration of session tokens. Default 1 hour.
* `scope_down_policy` - Optional inline IAM policy in JSON format to further restrict the access granted to the negotiated session.
rusoto/services/sts/src/custom/credential.rs