Sample code for 30+ languages & platforms
Dart

OneLogin OIDC - Get Discovery Document (OpenID Connect)

See more OneLogin OIDC Examples

Downloads the OpenID Connect self-discovery document for a OneLogin OIDC enabled app.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  final http = CkHttp();

  http.accept = 'application/json';

  final resp = CkHttpResponse();
  try {
    http.httpNoBody('GET', 'https://<account>.onelogin.com/oidc/.well-known/openid-configuration', resp);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  print('Response Status Code: ${resp.statusCode}');

  final jsonResponse = CkJsonObject();
  jsonResponse.load(resp.bodyStr);
  jsonResponse.emitCompact = false;
  print(jsonResponse.emit());

  if (resp.statusCode != 200) {
    print('Failed.');
    return;
  }

  // Sample output...
  // (See the parsing code below..)
  // 
  // Use the this online tool to generate parsing code from sample JSON: 
  // Generate Parsing Code from JSON

  // {
  //   "acr_values_supported": [
  //     "onelogin:nist:level:1:re-auth"
  //   ],
  //   "authorization_endpoint": "https://chilkat-dev.onelogin.com/oidc/auth",
  //   "claims_parameter_supported": true,
  //   "claims_supported": [
  //     "acr",
  //     "auth_time",
  //     "company",
  //     "custom_fields",
  //     "department",
  //     "email",
  //     "family_name",
  //     "given_name",
  //     "groups",
  //     "iss",
  //     "locale_code",
  //     "name",
  //     "params",
  //     "phone_number",
  //     "preferred_username",
  //     "sid",
  //     "sub",
  //     "title",
  //     "updated_at"
  //   ],
  //   "grant_types_supported": [
  //     "authorization_code",
  //     "implicit",
  //     "refresh_token",
  //     "client_credentials",
  //     "password"
  //   ],
  //   "id_token_signing_alg_values_supported": [
  //     "RS256"
  //   ],
  //   "issuer": "https://openid-connect.onelogin.com/oidc",
  //   "jwks_uri": "https://chilkat-dev.onelogin.com/oidc/certs",
  //   "request_parameter_supported": false,
  //   "request_uri_parameter_supported": false,
  //   "response_modes_supported": [
  //     "form_post",
  //     "fragment",
  //     "query"
  //   ],
  //   "response_types_supported": [
  //     "code",
  //     "id_token token",
  //     "id_token"
  //   ],
  //   "scopes_supported": [
  //     "openid",
  //     "name",
  //     "profile",
  //     "groups",
  //     "email",
  //     "params",
  //     "phone"
  //   ],
  //   "subject_types_supported": [
  //     "public"
  //   ],
  //   "token_endpoint": "https://chilkat-dev.onelogin.com/oidc/token",
  //   "token_endpoint_auth_methods_supported": [
  //     "client_secret_basic",
  //     "client_secret_post",
  //     "none"
  //   ],
  //   "userinfo_endpoint": "https://chilkat-dev.onelogin.com/oidc/me",
  //   "userinfo_signing_alg_values_supported": [
  //   ],
  //   "code_challenge_methods_supported": [
  //     "S256"
  //   ],
  //   "introspection_endpoint": "https://chilkat-dev.onelogin.com/oidc/token/introspection",
  //   "introspection_endpoint_auth_methods_supported": [
  //     "client_secret_basic",
  //     "client_secret_post",
  //     "none"
  //   ],
  //   "revocation_endpoint": "https://chilkat-dev.onelogin.com/oidc/token/revocation",
  //   "revocation_endpoint_auth_methods_supported": [
  //     "client_secret_basic",
  //     "client_secret_post",
  //     "none"
  //   ],
  //   "claim_types_supported": [
  //     "normal"
  //   ]
  // }
  // 

  var i = 0;
  var countI = 0;
  var strVal = '';

  final authorizationEndpoint = jsonResponse.stringOf('authorization_endpoint');
  final issuer = jsonResponse.stringOf('issuer');
  final jwksUri = jsonResponse.stringOf('jwks_uri');
  final tokenEndpoint = jsonResponse.stringOf('token_endpoint');
  final userinfoEndpoint = jsonResponse.stringOf('userinfo_endpoint');
  final introspectionEndpoint = jsonResponse.stringOf('introspection_endpoint');
  final revocationEndpoint = jsonResponse.stringOf('revocation_endpoint');
  i = 0;
  countI = jsonResponse.sizeOfArray('acr_values_supported');
  while (i < countI) {
    jsonResponse.i = i;
    strVal = jsonResponse.stringOf('acr_values_supported[i]');
    i++;
  }

  i = 0;
  countI = jsonResponse.sizeOfArray('claims_supported');
  while (i < countI) {
    jsonResponse.i = i;
    strVal = jsonResponse.stringOf('claims_supported[i]');
    i++;
  }

  i = 0;
  countI = jsonResponse.sizeOfArray('grant_types_supported');
  while (i < countI) {
    jsonResponse.i = i;
    strVal = jsonResponse.stringOf('grant_types_supported[i]');
    i++;
  }

  i = 0;
  countI = jsonResponse.sizeOfArray('id_token_signing_alg_values_supported');
  while (i < countI) {
    jsonResponse.i = i;
    strVal = jsonResponse.stringOf('id_token_signing_alg_values_supported[i]');
    i++;
  }

  i = 0;
  countI = jsonResponse.sizeOfArray('response_modes_supported');
  while (i < countI) {
    jsonResponse.i = i;
    strVal = jsonResponse.stringOf('response_modes_supported[i]');
    i++;
  }

  i = 0;
  countI = jsonResponse.sizeOfArray('response_types_supported');
  while (i < countI) {
    jsonResponse.i = i;
    strVal = jsonResponse.stringOf('response_types_supported[i]');
    i++;
  }

  i = 0;
  countI = jsonResponse.sizeOfArray('scopes_supported');
  while (i < countI) {
    jsonResponse.i = i;
    strVal = jsonResponse.stringOf('scopes_supported[i]');
    i++;
  }

  i = 0;
  countI = jsonResponse.sizeOfArray('subject_types_supported');
  while (i < countI) {
    jsonResponse.i = i;
    strVal = jsonResponse.stringOf('subject_types_supported[i]');
    i++;
  }

  i = 0;
  countI = jsonResponse.sizeOfArray('token_endpoint_auth_methods_supported');
  while (i < countI) {
    jsonResponse.i = i;
    strVal = jsonResponse.stringOf('token_endpoint_auth_methods_supported[i]');
    i++;
  }

  i = 0;
  countI = jsonResponse.sizeOfArray('userinfo_signing_alg_values_supported');
  while (i < countI) {
    jsonResponse.i = i;
    i++;
  }

  i = 0;
  countI = jsonResponse.sizeOfArray('code_challenge_methods_supported');
  while (i < countI) {
    jsonResponse.i = i;
    strVal = jsonResponse.stringOf('code_challenge_methods_supported[i]');
    i++;
  }

  i = 0;
  countI = jsonResponse.sizeOfArray('introspection_endpoint_auth_methods_supported');
  while (i < countI) {
    jsonResponse.i = i;
    strVal = jsonResponse.stringOf('introspection_endpoint_auth_methods_supported[i]');
    i++;
  }

  i = 0;
  countI = jsonResponse.sizeOfArray('revocation_endpoint_auth_methods_supported');
  while (i < countI) {
    jsonResponse.i = i;
    strVal = jsonResponse.stringOf('revocation_endpoint_auth_methods_supported[i]');
    i++;
  }

  i = 0;
  countI = jsonResponse.sizeOfArray('claim_types_supported');
  while (i < countI) {
    jsonResponse.i = i;
    strVal = jsonResponse.stringOf('claim_types_supported[i]');
    i++;
  }
}