Obtaining a Token with an OpenID Connect ID Token
Function
This API is used to obtain a federated identity authentication token using an OpenID Connect ID token.
The API can be called using both the global endpoint and region-specific endpoints.
URI
POST /v3.0/OS-AUTH/id-token/tokens
Request Parameters
| 
        Parameter  | 
      
        Mandatory  | 
      
        Type  | 
      
        Description  | 
     
|---|---|---|---|
| 
        X-Idp-Id  | 
      
        Yes  | 
      
        String  | 
      
        Identity provider ID.  | 
     
| 
        Parameter  | 
      
        Mandatory  | 
      
        Type  | 
      
        Description  | 
     
|---|---|---|---|
| 
        Yes  | 
      
        object  | 
      
        Details about the auth request parameter.  | 
     
| 
        Parameter  | 
      
        Mandatory  | 
      
        Type  | 
      
        Description  | 
     
|---|---|---|---|
| 
        Yes  | 
      
        object  | 
      
        Details about an ID token.  | 
     |
| 
        No  | 
      
        object  | 
      
        Permission scope of the token you want to obtain. An unscoped token will be obtained if this parameter is not specified.  | 
     
| 
        Parameter  | 
      
        Mandatory  | 
      
        Type  | 
      
        Description  | 
     
|---|---|---|---|
| 
        id  | 
      
        Yes  | 
      
        String  | 
      
        ID token, which is constructed by the enterprise IdP to carry the identity information of federated users. For details about how to obtain an ID token, see the enterprise IdP documentation.  | 
     
Response Parameters
Status code: 201
| 
        Parameter  | 
      
        Type  | 
      
        Description  | 
     
|---|---|---|
| 
        X-Subject-Token  | 
      
        String  | 
      
        Signed token.  | 
     
| 
        Parameter  | 
      
        Type  | 
      
        Description  | 
     
|---|---|---|
| 
        object  | 
      
        Details about the obtained token.  | 
     
| 
        Parameter  | 
      
        Type  | 
      
        Description  | 
     
|---|---|---|
| 
        expires_at  | 
      
        String  | 
      
        Time when the token will expire. 
         NOTE: 
         The value is a UTC time in the YYYY-MM-DDTHH:mm:ss.ssssssZ format, for example, 2023-06-28T08:56:33.710000Z. For details about the date and timestamp formats, see ISO-8601.  | 
     
| 
        methods  | 
      
        Array of strings  | 
      
        Method for obtaining the token. For federated users, the default value of this parameter is mapped.  | 
     
| 
        issued_at  | 
      
        String  | 
      
        Time when the token was issued. 
         NOTE: 
         The value is a UTC time in the YYYY-MM-DDTHH:mm:ss.ssssssZ format, for example, 2023-06-28T08:56:33.710000Z. For details about the date and timestamp formats, see ISO-8601.  | 
     
| 
        object  | 
      
        User details.  | 
     |
| 
        object  | 
      
        Account details.  | 
     |
| 
        object  | 
      
        Project details.  | 
     |
| 
        Array of objects  | 
      
        Role or policy details.  | 
     |
| 
        Array of objects  | 
      
        Catalog details.  | 
     
| 
        Parameter  | 
      
        Type  | 
      
        Description  | 
     
|---|---|---|
| 
        object  | 
      
        Federated user details.  | 
     |
| 
        object  | 
      
        Account details.  | 
     |
| 
        id  | 
      
        String  | 
      
        User ID.  | 
     
| 
        name  | 
      
        String  | 
      
        Username.  | 
     
| 
        Parameter  | 
      
        Type  | 
      
        Description  | 
     
|---|---|---|
| 
        object  | 
      
        Identity provider details.  | 
     |
| 
        object  | 
      
        Protocol details.  | 
     |
| 
        Array of objects  | 
      
        User group details.  | 
     
| 
        Parameter  | 
      
        Type  | 
      
        Description  | 
     
|---|---|---|
| 
        id  | 
      
        String  | 
      
        User group ID.  | 
     
| 
        name  | 
      
        String  | 
      
        User group name.  | 
     
| 
        Parameter  | 
      
        Type  | 
      
        Description  | 
     
|---|---|---|
| 
        id  | 
      
        String  | 
      
        Account ID.  | 
     
| 
        name  | 
      
        String  | 
      
        Account name.  | 
     
| 
        Parameter  | 
      
        Type  | 
      
        Description  | 
     
|---|---|---|
| 
        object  | 
      
        Account details.  | 
     |
| 
        id  | 
      
        String  | 
      
        Project ID.  | 
     
| 
        name  | 
      
        String  | 
      
        Project name.  | 
     
Example Request
- Request for obtaining a scoped token for a specific project
    
POST /v3.0/OS-AUTH/id-token/tokens
{ "auth" : { "id_token" : { "id" : "eyJhbGciOiJSU..." }, "scope" : { "project" : { "id" : "46419baef4324...", "name" : "eu-west-101" } } } } - Request for obtaining a scoped token for a specific domain
    
POST /v3.0/OS-AUTH/id-token/tokens
{ "auth" : { "id_token" : { "id" : "eyJhbGciOiJSU..." }, "scope" : { "domain" : { "id" : "063bb260a480...", "name" : "IAMDomain" } } } } - Request for obtaining an unscoped token
    
POST /v3.0/OS-AUTH/id-token/tokens
{ "auth" : { "id_token" : { "id" : "eyJhbGciOiJSU..." } } } 
Example Response
Status code: 201
The token is obtained successfully.
{ 
  "token" : { 
    "expires_at" : "2018-03-13T03:00:01.168000Z", 
    "methods" : [ "mapped" ], 
    "issued_at" : "2018-03-12T03:00:01.168000Z", 
    "user" : { 
      "OS-FEDERATION" : { 
        "identity_provider" : { 
          "id" : "idptest" 
        }, 
        "protocol" : { 
          "id" : "oidc" 
        }, 
        "groups" : [ { 
          "name" : "admin", 
          "id" : "45a8c8f..." 
        } ] 
      }, 
      "domain" : { 
        "id" : "063bb260a480...", 
        "name" : "IAMDomain" 
      }, 
      "name" : "FederationUser", 
      "id" : "suvmgvUZc4PaCOEc..." 
    } 
  } 
}
  Status code: 400
Invalid parameters.
{ 
  "error_msg" : "Request body is invalid.", 
  "error_code" : "IAM.0011" 
}
  Status code: 401
Authentication failed.
{ 
  "error_msg" : "The request you have made requires authentication.", 
  "error_code" : "IAM.0001" 
}
  Status code: 403
Access denied.
{ 
  "error_msg" : "Policy doesn't allow %(actions)s to be performed.", 
  "error_code" : "IAM.0003" 
}
  Status code: 404
The requested resource cannot be found.
{ 
  "error_msg" : "Could not find %(target)s: %(target_id)s.", 
  "error_code" : "IAM.0004" 
}
  Status code: 500
Internal system error.
{ 
  "error_msg" : "An unexpected error prevented the server from fulfilling your request.", 
  "error_code" : "IAM.0006" 
}
 Status Codes
| 
        Status Code  | 
      
        Description  | 
     
|---|---|
| 
        201  | 
      
        The token is obtained successfully.  | 
     
| 
        400  | 
      
        Invalid parameters.  | 
     
| 
        401  | 
      
        Authentication failed.  | 
     
| 
        403  | 
      
        Access denied.  | 
     
| 
        404  | 
      
        The requested resource cannot be found.  | 
     
| 
        500  | 
      
        Internal system error.  | 
     
Error Codes
For details, see Error Codes.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.