Sample code for 30+ languages & platforms
B4X

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 B4X Downloads

B4X
Dim success As Boolean = False

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

Dim http As ChilkatHttp
http.Initialize("http")

http.Accept = "application/json"

Dim resp As ChilkatHttpResponse
resp.Initialize
success = http.HttpNoBody("GET", "https://<account>.onelogin.com/oidc/.well-known/openid-configuration", resp)
If success = False Then
    Log(http.LastErrorText)
    Return
End If


Log("Response Status Code: " & resp.StatusCode)

Dim jsonResponse As ChilkatJsonObject
jsonResponse.Initialize
jsonResponse.Load(resp.BodyStr)
jsonResponse.EmitCompact = False
Log(jsonResponse.Emit)

If resp.StatusCode <> 200 Then
    Log("Failed.")
    Return
End If


'  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"
'    ]
'  }
'  

Dim authorization_endpoint As String
Dim claims_parameter_supported As Boolean
Dim issuer As String
Dim jwks_uri As String
Dim request_parameter_supported As Boolean
Dim request_uri_parameter_supported As Boolean
Dim token_endpoint As String
Dim userinfo_endpoint As String
Dim introspection_endpoint As String
Dim revocation_endpoint As String
Dim i As Int
Dim count_i As Int
Dim strVal As String

authorization_endpoint = jsonResponse.StringOf("authorization_endpoint")
claims_parameter_supported = jsonResponse.BoolOf("claims_parameter_supported")
issuer = jsonResponse.StringOf("issuer")
jwks_uri = jsonResponse.StringOf("jwks_uri")
request_parameter_supported = jsonResponse.BoolOf("request_parameter_supported")
request_uri_parameter_supported = jsonResponse.BoolOf("request_uri_parameter_supported")
token_endpoint = jsonResponse.StringOf("token_endpoint")
userinfo_endpoint = jsonResponse.StringOf("userinfo_endpoint")
introspection_endpoint = jsonResponse.StringOf("introspection_endpoint")
revocation_endpoint = jsonResponse.StringOf("revocation_endpoint")
i = 0
count_i = jsonResponse.SizeOfArray("acr_values_supported")
Do While i < count_i
    jsonResponse.I = i
    strVal = jsonResponse.StringOf("acr_values_supported[i]")
    i = i + 1
Loop
i = 0
count_i = jsonResponse.SizeOfArray("claims_supported")
Do While i < count_i
    jsonResponse.I = i
    strVal = jsonResponse.StringOf("claims_supported[i]")
    i = i + 1
Loop
i = 0
count_i = jsonResponse.SizeOfArray("grant_types_supported")
Do While i < count_i
    jsonResponse.I = i
    strVal = jsonResponse.StringOf("grant_types_supported[i]")
    i = i + 1
Loop
i = 0
count_i = jsonResponse.SizeOfArray("id_token_signing_alg_values_supported")
Do While i < count_i
    jsonResponse.I = i
    strVal = jsonResponse.StringOf("id_token_signing_alg_values_supported[i]")
    i = i + 1
Loop
i = 0
count_i = jsonResponse.SizeOfArray("response_modes_supported")
Do While i < count_i
    jsonResponse.I = i
    strVal = jsonResponse.StringOf("response_modes_supported[i]")
    i = i + 1
Loop
i = 0
count_i = jsonResponse.SizeOfArray("response_types_supported")
Do While i < count_i
    jsonResponse.I = i
    strVal = jsonResponse.StringOf("response_types_supported[i]")
    i = i + 1
Loop
i = 0
count_i = jsonResponse.SizeOfArray("scopes_supported")
Do While i < count_i
    jsonResponse.I = i
    strVal = jsonResponse.StringOf("scopes_supported[i]")
    i = i + 1
Loop
i = 0
count_i = jsonResponse.SizeOfArray("subject_types_supported")
Do While i < count_i
    jsonResponse.I = i
    strVal = jsonResponse.StringOf("subject_types_supported[i]")
    i = i + 1
Loop
i = 0
count_i = jsonResponse.SizeOfArray("token_endpoint_auth_methods_supported")
Do While i < count_i
    jsonResponse.I = i
    strVal = jsonResponse.StringOf("token_endpoint_auth_methods_supported[i]")
    i = i + 1
Loop
i = 0
count_i = jsonResponse.SizeOfArray("userinfo_signing_alg_values_supported")
Do While i < count_i
    jsonResponse.I = i
    i = i + 1
Loop
i = 0
count_i = jsonResponse.SizeOfArray("code_challenge_methods_supported")
Do While i < count_i
    jsonResponse.I = i
    strVal = jsonResponse.StringOf("code_challenge_methods_supported[i]")
    i = i + 1
Loop
i = 0
count_i = jsonResponse.SizeOfArray("introspection_endpoint_auth_methods_supported")
Do While i < count_i
    jsonResponse.I = i
    strVal = jsonResponse.StringOf("introspection_endpoint_auth_methods_supported[i]")
    i = i + 1
Loop
i = 0
count_i = jsonResponse.SizeOfArray("revocation_endpoint_auth_methods_supported")
Do While i < count_i
    jsonResponse.I = i
    strVal = jsonResponse.StringOf("revocation_endpoint_auth_methods_supported[i]")
    i = i + 1
Loop
i = 0
count_i = jsonResponse.SizeOfArray("claim_types_supported")
Do While i < count_i
    jsonResponse.I = i
    strVal = jsonResponse.StringOf("claim_types_supported[i]")
    i = i + 1
Loop