Skip to content

/AWS1/IF_QST=>GETIDENTITYCONTEXT()

About GetIdentityContext

Retrieves the identity context for a Quick Sight user in a specified namespace, allowing you to obtain identity tokens that can be used with identity-enhanced IAM role sessions to call identity-aware APIs.

Currently, you can call the following APIs with identity-enhanced Credentials

Supported Authentication Methods

This API supports Quick Sight native users, IAM federated users, and Active Directory users. For Quick Sight users authenticated by Amazon Web Services Identity Center, see Identity Center documentation on identity-enhanced IAM role sessions.

Getting Identity-Enhanced Credentials

To obtain identity-enhanced credentials, follow these steps:

  • Call the GetIdentityContext API to retrieve an identity token for the specified user.

  • Use the identity token with the STS AssumeRole API to obtain identity-enhanced IAM role session credentials.

Usage with STS AssumeRole

The identity token returned by this API should be used with the STS AssumeRole API to obtain credentials for an identity-enhanced IAM role session. When calling AssumeRole, include the identity token in the ProvidedContexts parameter with ProviderArn set to arn:aws:iam::aws:contextProvider/QuickSight and ContextAssertion set to the identity token received from this API.

The assumed role must allow the sts:SetContext action in addition to sts:AssumeRole in its trust relationship policy. The trust policy should include both actions for the principal that will be assuming the role.

Method Signature

METHODS /AWS1/IF_QST~GETIDENTITYCONTEXT
  IMPORTING
    !IV_AWSACCOUNTID TYPE /AWS1/QSTAWSACCOUNTID OPTIONAL
    !IO_USERIDENTIFIER TYPE REF TO /AWS1/CL_QSTUSERIDENTIFIER OPTIONAL
    !IV_NAMESPACE TYPE /AWS1/QSTNAMESPACE OPTIONAL
    !IV_SESSIONEXPIRESAT TYPE /AWS1/QSTTIMESTAMP00 OPTIONAL
  RETURNING
    VALUE(OO_OUTPUT) TYPE REF TO /aws1/cl_qstgetidcontextrsp
  RAISING
    /AWS1/CX_QSTACCESSDENIEDEX
    /AWS1/CX_QSTINTERNALFAILUREEX
    /AWS1/CX_QSTINVPARAMVALUEEX
    /AWS1/CX_QSTPRECONDNOTMETEX
    /AWS1/CX_QSTRESOURCENOTFOUNDEX
    /AWS1/CX_QSTTHROTTLINGEX
    /AWS1/CX_QSTCLIENTEXC
    /AWS1/CX_QSTSERVEREXC
    /AWS1/CX_RT_TECHNICAL_GENERIC
    /AWS1/CX_RT_SERVICE_GENERIC.

IMPORTING

Required arguments:

iv_awsaccountid TYPE /AWS1/QSTAWSACCOUNTID /AWS1/QSTAWSACCOUNTID

The ID for the Amazon Web Services account that the user whose identity context you want to retrieve is in. Currently, you use the ID for the Amazon Web Services account that contains your Quick Sight account.

io_useridentifier TYPE REF TO /AWS1/CL_QSTUSERIDENTIFIER /AWS1/CL_QSTUSERIDENTIFIER

The identifier for the user whose identity context you want to retrieve.

Optional arguments:

iv_namespace TYPE /AWS1/QSTNAMESPACE /AWS1/QSTNAMESPACE

The namespace of the user that you want to get identity context for. This parameter is required when the UserIdentifier is specified using Email or UserName.

iv_sessionexpiresat TYPE /AWS1/QSTTIMESTAMP00 /AWS1/QSTTIMESTAMP00

The timestamp at which the session will expire.

RETURNING

oo_output TYPE REF TO /aws1/cl_qstgetidcontextrsp /AWS1/CL_QSTGETIDCONTEXTRSP

Domain /AWS1/RT_ACCOUNT_ID
Primitive Type NUMC

Examples

Syntax Example

This is an example of the syntax for calling the method. It includes every possible argument and initializes every possible value. The data provided is not necessarily semantically accurate (for example the value "string" may be provided for something that is intended to be an instance ID, or in some cases two arguments may be mutually exclusive). The syntax shows the ABAP syntax for creating the various data structures.

DATA(lo_result) = lo_client->getidentitycontext(
  io_useridentifier = new /aws1/cl_qstuseridentifier(
    iv_email = |string|
    iv_userarn = |string|
    iv_username = |string|
  )
  iv_awsaccountid = |string|
  iv_namespace = |string|
  iv_sessionexpiresat = '20150101000000.0000000'
).

This is an example of reading all possible response values

lo_result = lo_result.
IF lo_result IS NOT INITIAL.
  lv_statuscode2 = lo_result->get_status( ).
  lv_string = lo_result->get_requestid( ).
  lv_string = lo_result->get_context( ).
ENDIF.