Chilkat Online Tools

ERROR!

------------------- GenerateCode ----------------------
ImpliedContentType: application/x-www-form-urlencoded
---- begin chilkat script ----
// This example assumes the Chilkat API to have been previously unlocked.
// See {{-global_unlock:::Global Unlock Sample-}} for sample code.

new Http http;
ckbool success;

new HttpRequest req;

new JsonObject jsonParam1;
call req.AddParam("token",jsonParam1.Emit());

new JsonObject jsonParam2;
call req.AddParam("client_id",jsonParam2.Emit());

call req.AddHeader("Authorization","Bearer <access_token>");

new HttpResponse resp;
req.HttpVerb = "POST";
req.ContentType = "application/x-www-form-urlencoded";
success = http.PostUrlEncoded("https://<tenant-name>.forgeblocks.com/am/oauth2/realms/root/realms/alpha/introspect", req,resp);
if (success == ckfalse) {
println http.LastErrorText;
return;
}

new StringBuilder sbResponseBody;
ignore = resp.GetBodySb(sbResponseBody);

new JsonObject jResp;
call jResp.LoadSb(sbResponseBody);
jResp.EmitCompact = ckfalse;

println "Response Body:";
println jResp.Emit();

int respStatusCode = resp.StatusCode;
println "Response Status Code = ",respStatusCode;
if (respStatusCode >= 400) {
    println "Response Header:";
    println resp.Header;
    println "Failed.";
    return;
}

// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)

// {
//   "active": true,
//   "scope": "manage",
//   "realm": "/",
//   "client_id": "forgerockDemoPublicClient",
//   "user_id": "demo",
//   "token_type": "Bearer",
//   "exp": 1597324784,
//   "sub": "demo",
//   "iss": "http://openam.example.com:8080/openam/oauth2",
//   "auth_level": 0,
//   "authGrantId": "bdtxHp1kka6iin4Q2KpNgCfgcVs",
//   "auditTrackingId": "037f02f9-d821-4f72-8563-c5050c40fdc3-53256",
//   "expires_in": 3600
// }

// Sample code for parsing the JSON response...
// Use this online tool to generate parsing code from sample JSON: {{.https://tools.chilkat.io/jsonParse|||Generate JSON Parsing Code.}}

#ifdef IS_C_CPP
// Chilkat functions returning "const char *" return a pointer to temporary internal memory owned and managed by Chilkat.
#undef IS_C_CPP


ckbool active = jResp.BoolOf("active");
string scope = jResp.StringOf("scope");
string realm = jResp.StringOf("realm");
string client_id = jResp.StringOf("client_id");
string user_id = jResp.StringOf("user_id");
string token_type = jResp.StringOf("token_type");
int exp = jResp.IntOf("exp");
string v_sub = jResp.StringOf("sub");
string iss = jResp.StringOf("iss");
int auth_level = jResp.IntOf("auth_level");
string authGrantId = jResp.StringOf("authGrantId");
string auditTrackingId = jResp.StringOf("auditTrackingId");
int expires_in = jResp.IntOf("expires_in");



---- end chilkat script ----

phpAx / ForgeRock Identity Cloud Collection / Step 5: Introspect the Access Token

Back to Collection Items

<?php

// This example assumes the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.

$http = new COM("Chilkat.Http");

$req = new COM("Chilkat.HttpRequest");

$jsonParam1 = new COM("Chilkat.JsonObject");
$req->AddParam('token',$jsonParam1->emit());

$jsonParam2 = new COM("Chilkat.JsonObject");
$req->AddParam('client_id',$jsonParam2->emit());

$req->AddHeader('Authorization','Bearer <access_token>');

$resp = new COM("Chilkat.HttpResponse");
$req->HttpVerb = 'POST';
$req->ContentType = 'application/x-www-form-urlencoded';
ERROR: Assignment type mismatch.  ExpressionType=HttpResponse, atgType=ckbool

if ($success == 0) {
    print $http->LastErrorText . "\n";
    exit;
}

$sbResponseBody = new COM("Chilkat.StringBuilder");
$resp->GetBodySb($sbResponseBody);

$jResp = new COM("Chilkat.JsonObject");
$jResp->LoadSb($sbResponseBody);
$jResp->EmitCompact = 0;

print 'Response Body:' . "\n";
print $jResp->emit() . "\n";

$respStatusCode = $resp->StatusCode;
print 'Response Status Code = ' . $respStatusCode . "\n";
if ($respStatusCode >= 400) {
    print 'Response Header:' . "\n";
    print $resp->Header . "\n";
    print 'Failed.' . "\n";
    exit;
}

// Sample JSON response:
// (Sample code for parsing the JSON response is shown below)

// {
//   "active": true,
//   "scope": "manage",
//   "realm": "/",
//   "client_id": "forgerockDemoPublicClient",
//   "user_id": "demo",
//   "token_type": "Bearer",
//   "exp": 1597324784,
//   "sub": "demo",
//   "iss": "http://openam.example.com:8080/openam/oauth2",
//   "auth_level": 0,
//   "authGrantId": "bdtxHp1kka6iin4Q2KpNgCfgcVs",
//   "auditTrackingId": "037f02f9-d821-4f72-8563-c5050c40fdc3-53256",
//   "expires_in": 3600
// }

// Sample code for parsing the JSON response...
// Use this online tool to generate parsing code from sample JSON: Generate JSON Parsing Code

$active = $jResp->BoolOf('active');
$scope = $jResp->stringOf('scope');
$realm = $jResp->stringOf('realm');
$client_id = $jResp->stringOf('client_id');
$user_id = $jResp->stringOf('user_id');
$token_type = $jResp->stringOf('token_type');
$exp = $jResp->IntOf('exp');
$v_sub = $jResp->stringOf('sub');
$iss = $jResp->stringOf('iss');
$auth_level = $jResp->IntOf('auth_level');
$authGrantId = $jResp->stringOf('authGrantId');
$auditTrackingId = $jResp->stringOf('auditTrackingId');
$expires_in = $jResp->IntOf('expires_in');

?>

Curl Command

curl -X POST
	-H "Authorization: Bearer <access_token>"
	--data-urlencode 'token={{access_token}}'
	--data-urlencode 'client_id={{postmanPublicClientId}}'
https://<tenant-name>.forgeblocks.com/am/oauth2/realms/root/realms/alpha/introspect

Postman Collection Item JSON

{
  "name": "Step 5: Introspect the Access Token",
  "event": [
    {
      "listen": "test",
      "script": {
        "exec": [
          "// Tests",
          "",
          "const jsonData = JSON.parse(responseBody);",
          "",
          "pm.test(\"Status code is 200\", () => {",
          "  pm.expect(pm.response.code).to.eql(200);",
          "});",
          "",
          "pm.test(\"Response contains correct `client_id`.\", function () {",
          "    pm.expect(jsonData.client_id).to.eql(pm.collectionVariables.get(\"postmanPublicClientId\"));",
          "});",
          ""
        ],
        "type": "text/javascript"
      }
    }
  ],
  "request": {
    "method": "POST",
    "header": [
    ],
    "body": {
      "mode": "urlencoded",
      "urlencoded": [
        {
          "key": "token",
          "value": "{{access_token}}",
          "description": "Access token you want to introspect.",
          "type": "text"
        },
        {
          "key": "client_id",
          "value": "{{postmanPublicClientId}}",
          "description": "The ID of the Confidential OAuth Client.",
          "type": "text"
        }
      ]
    },
    "url": {
      "raw": "{{amUrl}}/oauth2{{realm}}/introspect",
      "host": [
        "{{amUrl}}"
      ],
      "path": [
        "oauth2{{realm}}",
        "introspect"
      ]
    },
    "description": "Retrieve metadata about the active access token, such as, approved scopes, the user that authorized the token, and the expiry time."
  },
  "response": [
    {
      "name": "Example",
      "originalRequest": {
        "method": "POST",
        "header": [
        ],
        "body": {
          "mode": "urlencoded",
          "urlencoded": [
            {
              "key": "token",
              "value": "{{access_token}}",
              "description": "Access token you want to introspect.",
              "type": "text"
            },
            {
              "key": "client_id",
              "value": "{{postmanPublicClientId}}",
              "description": "The ID of the Confidential OAuth Client.",
              "type": "text"
            }
          ]
        },
        "url": {
          "raw": "{{amUrl}}/oauth2{{realm}}/introspect",
          "host": [
            "{{amUrl}}"
          ],
          "path": [
            "oauth2{{realm}}",
            "introspect"
          ]
        }
      },
      "status": "OK",
      "code": 200,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "X-Frame-Options",
          "value": "SAMEORIGIN"
        },
        {
          "key": "X-Content-Type-Options",
          "value": "nosniff"
        },
        {
          "key": "Content-Type",
          "value": "application/json;charset=UTF-8"
        },
        {
          "key": "Content-Length",
          "value": "346"
        },
        {
          "key": "Date",
          "value": "Thu, 13 Aug 2020 12:20:17 GMT"
        }
      ],
      "cookie": [
      ],
      "body": "{\n    \"active\": true,\n    \"scope\": \"manage\",\n    \"realm\": \"/\",\n    \"client_id\": \"forgerockDemoPublicClient\",\n    \"user_id\": \"demo\",\n    \"token_type\": \"Bearer\",\n    \"exp\": 1597324784,\n    \"sub\": \"demo\",\n    \"iss\": \"http://openam.example.com:8080/openam/oauth2\",\n    \"auth_level\": 0,\n    \"authGrantId\": \"bdtxHp1kka6iin4Q2KpNgCfgcVs\",\n    \"auditTrackingId\": \"037f02f9-d821-4f72-8563-c5050c40fdc3-53256\",\n    \"expires_in\": 3600\n}"
    }
  ]
}