service/verifiedpermissions/api_op_BatchIsAuthorizedWithToken.go (143 lines of code) (raw):

// Code generated by smithy-go-codegen DO NOT EDIT. package verifiedpermissions import ( "context" "fmt" awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware" "github.com/aws/aws-sdk-go-v2/service/verifiedpermissions/types" "github.com/aws/smithy-go/middleware" smithyhttp "github.com/aws/smithy-go/transport/http" ) // Makes a series of decisions about multiple authorization requests for one // token. The principal in this request comes from an external identity source in // the form of an identity or access token, formatted as a [JSON web token (JWT)]. The information in // the parameters can also define additional context that Verified Permissions can // include in the evaluations. // // The request is evaluated against all policies in the specified policy store // that match the entities that you provide in the entities declaration and in the // token. The result of the decisions is a series of Allow or Deny responses, // along with the IDs of the policies that produced each decision. // // The entities of a BatchIsAuthorizedWithToken API request can contain up to 100 // resources and up to 99 user groups. The requests of a BatchIsAuthorizedWithToken // API request can contain up to 30 requests. // // The BatchIsAuthorizedWithToken operation doesn't have its own IAM permission. // To authorize this operation for Amazon Web Services principals, include the // permission verifiedpermissions:IsAuthorizedWithToken in their IAM policies. // // [JSON web token (JWT)]: https://wikipedia.org/wiki/JSON_Web_Token func (c *Client) BatchIsAuthorizedWithToken(ctx context.Context, params *BatchIsAuthorizedWithTokenInput, optFns ...func(*Options)) (*BatchIsAuthorizedWithTokenOutput, error) { if params == nil { params = &BatchIsAuthorizedWithTokenInput{} } result, metadata, err := c.invokeOperation(ctx, "BatchIsAuthorizedWithToken", params, optFns, c.addOperationBatchIsAuthorizedWithTokenMiddlewares) if err != nil { return nil, err } out := result.(*BatchIsAuthorizedWithTokenOutput) out.ResultMetadata = metadata return out, nil } type BatchIsAuthorizedWithTokenInput struct { // Specifies the ID of the policy store. Policies in this policy store will be // used to make an authorization decision for the input. // // This member is required. PolicyStoreId *string // An array of up to 30 requests that you want Verified Permissions to evaluate. // // This member is required. Requests []types.BatchIsAuthorizedWithTokenInputItem // Specifies an access token for the principal that you want to authorize in each // request. This token is provided to you by the identity provider (IdP) associated // with the specified identity source. You must specify either an accessToken , an // identityToken , or both. // // Must be an access token. Verified Permissions returns an error if the token_use // claim in the submitted token isn't access . AccessToken *string // (Optional) Specifies the list of resources and their associated attributes that // Verified Permissions can examine when evaluating the policies. These additional // entities and their attributes can be referenced and checked by conditional // elements in the policies in the specified policy store. // // You can't include principals in this parameter, only resource and action // entities. This parameter can't include any entities of a type that matches the // user or group entity types that you defined in your identity source. // // - The BatchIsAuthorizedWithToken operation takes principal attributes from // only the identityToken or accessToken passed to the operation. // // - For action entities, you can include only their Identifier and EntityType . Entities types.EntitiesDefinition // Specifies an identity (ID) token for the principal that you want to authorize // in each request. This token is provided to you by the identity provider (IdP) // associated with the specified identity source. You must specify either an // accessToken , an identityToken , or both. // // Must be an ID token. Verified Permissions returns an error if the token_use // claim in the submitted token isn't id . IdentityToken *string noSmithyDocumentSerde } type BatchIsAuthorizedWithTokenOutput struct { // A series of Allow or Deny decisions for each request, and the policies that // produced them. These results are returned in the order they were requested. // // This member is required. Results []types.BatchIsAuthorizedWithTokenOutputItem // The identifier of the principal in the ID or access token. Principal *types.EntityIdentifier // Metadata pertaining to the operation's result. ResultMetadata middleware.Metadata noSmithyDocumentSerde } func (c *Client) addOperationBatchIsAuthorizedWithTokenMiddlewares(stack *middleware.Stack, options Options) (err error) { if err := stack.Serialize.Add(&setOperationInputMiddleware{}, middleware.After); err != nil { return err } err = stack.Serialize.Add(&awsAwsjson10_serializeOpBatchIsAuthorizedWithToken{}, middleware.After) if err != nil { return err } err = stack.Deserialize.Add(&awsAwsjson10_deserializeOpBatchIsAuthorizedWithToken{}, middleware.After) if err != nil { return err } if err := addProtocolFinalizerMiddlewares(stack, options, "BatchIsAuthorizedWithToken"); err != nil { return fmt.Errorf("add protocol finalizers: %v", err) } if err = addlegacyEndpointContextSetter(stack, options); err != nil { return err } if err = addSetLoggerMiddleware(stack, options); err != nil { return err } if err = addClientRequestID(stack); err != nil { return err } if err = addComputeContentLength(stack); err != nil { return err } if err = addResolveEndpointMiddleware(stack, options); err != nil { return err } if err = addComputePayloadSHA256(stack); err != nil { return err } if err = addRetry(stack, options); err != nil { return err } if err = addRawResponseToMetadata(stack); err != nil { return err } if err = addRecordResponseTiming(stack); err != nil { return err } if err = addSpanRetryLoop(stack, options); err != nil { return err } if err = addClientUserAgent(stack, options); err != nil { return err } if err = smithyhttp.AddErrorCloseResponseBodyMiddleware(stack); err != nil { return err } if err = smithyhttp.AddCloseResponseBodyMiddleware(stack); err != nil { return err } if err = addSetLegacyContextSigningOptionsMiddleware(stack); err != nil { return err } if err = addTimeOffsetBuild(stack, c); err != nil { return err } if err = addUserAgentRetryMode(stack, options); err != nil { return err } if err = addCredentialSource(stack, options); err != nil { return err } if err = addOpBatchIsAuthorizedWithTokenValidationMiddleware(stack); err != nil { return err } if err = stack.Initialize.Add(newServiceMetadataMiddleware_opBatchIsAuthorizedWithToken(options.Region), middleware.Before); err != nil { return err } if err = addRecursionDetection(stack); err != nil { return err } if err = addRequestIDRetrieverMiddleware(stack); err != nil { return err } if err = addResponseErrorMiddleware(stack); err != nil { return err } if err = addRequestResponseLogging(stack, options); err != nil { return err } if err = addDisableHTTPSMiddleware(stack, options); err != nil { return err } if err = addSpanInitializeStart(stack); err != nil { return err } if err = addSpanInitializeEnd(stack); err != nil { return err } if err = addSpanBuildRequestStart(stack); err != nil { return err } if err = addSpanBuildRequestEnd(stack); err != nil { return err } return nil } func newServiceMetadataMiddleware_opBatchIsAuthorizedWithToken(region string) *awsmiddleware.RegisterServiceMetadata { return &awsmiddleware.RegisterServiceMetadata{ Region: region, ServiceID: ServiceID, OperationName: "BatchIsAuthorizedWithToken", } }