Sample code for 30+ languages & platforms
AutoIt

Azure Fetch OpenID Connect metadata document

See more OIDC Examples

Downloads the OpenID Connect self-discovery document for an Azure OIDC enabled app.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

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

$oHttp = ObjCreate("Chilkat.Http")

$oHttp.Accept = "application/json"

; See the Microsoft Azure OIDC documentation at https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-protocols-oidc
; The "tenant" can take one of four values described in the documentation at the link above.

$bSuccess = $oHttp.SetUrlVar("tenant","6d8ddd66-68d1-44b0-af5c-e31b4b7ee5cd")
$oResp = ObjCreate("Chilkat.HttpResponse")
$bSuccess = $oHttp.HttpNoBody("GET","https://login.microsoftonline.com/{$tenant}/v2.0/.well-known/openid-configuration",$oResp)
If ($bSuccess = False) Then
    ConsoleWrite($oHttp.LastErrorText & @CRLF)
    Exit
EndIf

ConsoleWrite("Response Status Code: " & $oResp.StatusCode & @CRLF)

$oJson = ObjCreate("Chilkat.JsonObject")
$oJson.Load($oResp.BodyStr)
$oJson.EmitCompact = False
ConsoleWrite($oJson.Emit() & @CRLF)

If ($oResp.StatusCode <> 200) Then
    ConsoleWrite("Failed." & @CRLF)
    Exit
EndIf

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

; {
;   "token_endpoint": "https://login.microsoftonline.com/6d8ddd66-68d1-44b0-af5c-e31b4b7ee5cd/oauth2/v2.0/token",
;   "token_endpoint_auth_methods_supported": [
;     "client_secret_post",
;     "private_key_jwt",
;     "client_secret_basic"
;   ],
;   "jwks_uri": "https://login.microsoftonline.com/6d8ddd66-68d1-44b0-af5c-e31b4b7ee5cd/discovery/v2.0/keys",
;   "response_modes_supported": [
;     "query",
;     "fragment",
;     "form_post"
;   ],
;   "subject_types_supported": [
;     "pairwise"
;   ],
;   "id_token_signing_alg_values_supported": [
;     "RS256"
;   ],
;   "response_types_supported": [
;     "code",
;     "id_token",
;     "code id_token",
;     "id_token token"
;   ],
;   "scopes_supported": [
;     "openid",
;     "profile",
;     "email",
;     "offline_access"
;   ],
;   "issuer": "https://login.microsoftonline.com/6d8ddd66-68d1-44b0-af5c-e31b4b7ee5cd/v2.0",
;   "request_uri_parameter_supported": false,
;   "userinfo_endpoint": "https://graph.microsoft.com/oidc/userinfo",
;   "authorization_endpoint": "https://login.microsoftonline.com/6d8ddd66-68d1-44b0-af5c-e31b4b7ee5cd/oauth2/v2.0/authorize",
;   "device_authorization_endpoint": "https://login.microsoftonline.com/6d8ddd66-68d1-44b0-af5c-e31b4b7ee5cd/oauth2/v2.0/devicecode",
;   "http_logout_supported": true,
;   "frontchannel_logout_supported": true,
;   "end_session_endpoint": "https://login.microsoftonline.com/6d8ddd66-68d1-44b0-af5c-e31b4b7ee5cd/oauth2/v2.0/logout",
;   "claims_supported": [
;     "sub",
;     "iss",
;     "cloud_instance_name",
;     "cloud_instance_host_name",
;     "cloud_graph_host_name",
;     "msgraph_host",
;     "aud",
;     "exp",
;     "iat",
;     "auth_time",
;     "acr",
;     "nonce",
;     "preferred_username",
;     "name",
;     "tid",
;     "ver",
;     "at_hash",
;     "c_hash",
;     "email"
;   ],
;   "kerberos_endpoint": "https://login.microsoftonline.com/6d8ddd66-68d1-44b0-af5c-e31b4b7ee5cd/kerberos",
;   "tenant_region_scope": "NA",
;   "cloud_instance_name": "microsoftonline.com",
;   "cloud_graph_host_name": "graph.windows.net",
;   "msgraph_host": "graph.microsoft.com",
;   "rbac_url": "https://pas.windows.net"
; }

Local $strVal

Local $sToken_endpoint = $oJson.StringOf("token_endpoint")
Local $sJwks_uri = $oJson.StringOf("jwks_uri")
Local $sIssuer = $oJson.StringOf("issuer")
Local $bRequest_uri_parameter_supported = $oJson.BoolOf("request_uri_parameter_supported")
Local $sUserinfo_endpoint = $oJson.StringOf("userinfo_endpoint")
Local $sAuthorization_endpoint = $oJson.StringOf("authorization_endpoint")
Local $sDevice_authorization_endpoint = $oJson.StringOf("device_authorization_endpoint")
Local $bHttp_logout_supported = $oJson.BoolOf("http_logout_supported")
Local $bFrontchannel_logout_supported = $oJson.BoolOf("frontchannel_logout_supported")
Local $sEnd_session_endpoint = $oJson.StringOf("end_session_endpoint")
Local $sKerberos_endpoint = $oJson.StringOf("kerberos_endpoint")
Local $sTenant_region_scope = $oJson.StringOf("tenant_region_scope")
Local $sCloud_instance_name = $oJson.StringOf("cloud_instance_name")
Local $sCloud_graph_host_name = $oJson.StringOf("cloud_graph_host_name")
Local $sMsgraph_host = $oJson.StringOf("msgraph_host")
Local $sRbac_url = $oJson.StringOf("rbac_url")
Local $i = 0
Local $iCount_i = $oJson.SizeOfArray("token_endpoint_auth_methods_supported")
While $i < $iCount_i
    $oJson.I = $i
    $strVal = $oJson.StringOf("token_endpoint_auth_methods_supported[i]")
    $i = $i + 1
Wend
$i = 0
$iCount_i = $oJson.SizeOfArray("response_modes_supported")
While $i < $iCount_i
    $oJson.I = $i
    $strVal = $oJson.StringOf("response_modes_supported[i]")
    $i = $i + 1
Wend
$i = 0
$iCount_i = $oJson.SizeOfArray("subject_types_supported")
While $i < $iCount_i
    $oJson.I = $i
    $strVal = $oJson.StringOf("subject_types_supported[i]")
    $i = $i + 1
Wend
$i = 0
$iCount_i = $oJson.SizeOfArray("id_token_signing_alg_values_supported")
While $i < $iCount_i
    $oJson.I = $i
    $strVal = $oJson.StringOf("id_token_signing_alg_values_supported[i]")
    $i = $i + 1
Wend
$i = 0
$iCount_i = $oJson.SizeOfArray("response_types_supported")
While $i < $iCount_i
    $oJson.I = $i
    $strVal = $oJson.StringOf("response_types_supported[i]")
    $i = $i + 1
Wend
$i = 0
$iCount_i = $oJson.SizeOfArray("scopes_supported")
While $i < $iCount_i
    $oJson.I = $i
    $strVal = $oJson.StringOf("scopes_supported[i]")
    $i = $i + 1
Wend
$i = 0
$iCount_i = $oJson.SizeOfArray("claims_supported")
While $i < $iCount_i
    $oJson.I = $i
    $strVal = $oJson.StringOf("claims_supported[i]")
    $i = $i + 1
Wend