# FederatedPrincipal

Principal entity that represents a federated identity provider such as Amazon Cognito, that can be used to provide temporary security credentials to users who have been authenticated.

Additional condition keys are available when the temporary security credentials are used to make a request.
You can use these keys to write policies that limit the access of federated users.

Extends: PrincipalBase › FederatedPrincipal
Implements: IAssumeRolePrincipal, IComparablePrincipal, IGrantable, IPrincipal
Superclass of: OpenIdConnectPrincipal, SamlConsolePrincipal, SamlPrincipal, WebIdentityPrincipal

- Source: [`aws-iam/lib/principals.ts`](https://github.com/aws/aws-cdk/blob/v2.275.0/packages/aws-cdk-lib/aws-iam/lib/principals.ts#L692)
- Type last changed: v2.28.0 · 14 Jun 2022

## Example

```ts
// The code below shows an example of how to instantiate this type.
// The values are placeholders you should change.
import { aws_iam as iam } from 'aws-cdk-lib';

declare const conditions: any;
const federatedPrincipal = new iam.FederatedPrincipal('federated', /* all optional props */ {
  conditionsKey: conditions,
}, /* all optional props */ 'assumeRoleAction');
```

## Initializer

```ts
new FederatedPrincipal(federated: string, conditions?: { [key: string]: any }, assumeRoleAction?: string)
```

## Properties

- `assumeRoleAction`: string — When this Principal is used in an AssumeRole policy, the action to use.

- `conditions`: { [key: string]: any } — The conditions under which the policy is in effect.

- `federated`: string — federated identity provider (i.e. 'cognito-identity.amazonaws.com' for users authenticated through Cognito).

- `grantPrincipal`: [IPrincipal](/cdk/api/v2/docs/aws-cdk-lib.aws_iam.IPrincipal.html) — The principal to grant permissions to.

- `policyFragment`: [PrincipalPolicyFragment](/cdk/api/v2/docs/aws-cdk-lib.aws_iam.PrincipalPolicyFragment.html) — Return the policy fragment that identifies this principal in a Policy.

- `principalAccount`: string — The AWS account ID of this principal.

  Can be undefined when the account is not known
  (for example, for service principals).
  Can be a Token - in that case,
  it's assumed to be AWS::AccountId.

## Methods

- `addToAssumeRolePolicy(document: PolicyDocument): void` — Add the principal to the AssumeRolePolicyDocument.

  Add the statements to the AssumeRolePolicyDocument necessary to give this principal
  permissions to assume the given role.

- `addToPolicy(statement: PolicyStatement): boolean` — Add to the policy of this principal.

- `addToPrincipalPolicy(_statement: PolicyStatement): AddToPrincipalPolicyResult` — Add to the policy of this principal.

- `dedupeString(): string` — Return whether or not this principal is equal to the given principal.

- `toJSON(): { [key: string]: string[] }` — JSON-ify the principal.

  Used when JSON.stringify() is called

- `toString(): string` — Returns a string representation of an object.

- `withConditions(conditions: { [key: string]: any }): PrincipalBase` — Returns a new PrincipalWithConditions using this principal as the base, with the passed conditions added.

  When there is a value for the same operator and key in both the principal and the
  conditions parameter, the value from the conditions parameter will be used.

  **Returns:** a new PrincipalWithConditions object.

- `withSessionTags(): PrincipalBase` — Returns a new principal using this principal as the base, with session tags enabled.

  **Returns:** a new SessionTagsPrincipal object.
