Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(Visual FoxPro) Get an Azure AD Access TokenDemonstrates how to obtain an Azure AD access token for authentication using a client ID, client secret, and tenant ID.
LOCAL loSocket LOCAL lnSuccess LOCAL loAzureAD LOCAL loJson LOCAL loFac LOCAL loSa LOCAL loSbIdToken LOCAL loJsonIdToken LOCAL lcAud LOCAL lcIss LOCAL lnIat LOCAL lnNbf LOCAL lnExp LOCAL lcAio LOCAL lcApp_displayname LOCAL lcAppid LOCAL lcAppidacr LOCAL lcIdp LOCAL lcOid LOCAL lcSid LOCAL lcS_sub LOCAL lcTid LOCAL lcUti LOCAL lcVer * This example requires the Chilkat API to have been previously unlocked. * See Global Unlock Sample for sample code. loSocket = CreateObject('Chilkat_9_5_0.Socket') * Make a TLS connection to login.microsoftonline.com, waiting at most 5000 milliseconds. lnSuccess = loSocket.Connect("login.microsoftonline.com",443,1,5000) IF (lnSuccess <> 1) THEN ? loSocket.LastErrorText RELEASE loSocket CANCEL ENDIF * Create an Azure AD auth object, and provide the required information for authorization. loAzureAD = CreateObject('Chilkat_9_5_0.AuthAzureAD') loAzureAD.ClientId = "AZURE_AD_CLIENT_ID" loAzureAD.ClientSecret = "AZURE_AD_CLIENT_SECRET" loAzureAD.TenantId = "AZURE_TENANT_ID" loAzureAD.Resource = "https://outlook.office365.com/" * Retrieve the access token using the TLS connection to login.microsoftonline.com lnSuccess = loAzureAD.ObtainAccessToken(loSocket) IF (lnSuccess <> 1) THEN ? loSocket.LastErrorText RELEASE loSocket RELEASE loAzureAD CANCEL ENDIF * Show the access token, and then save it to a JSON file * for future use (such as with a REST method call). ? "Azure AD Access Token = " + loAzureAD.AccessToken loJson = CreateObject('Chilkat_9_5_0.JsonObject') loJson.AppendString("accessToken",loAzureAD.AccessToken) * Save our access token to a file. It will be used in subsequent REST API calls. loFac = CreateObject('Chilkat_9_5_0.FileAccess') loFac.WriteEntireTextFile("qa_data/tokens/azureAD_office365.json",loJson.Emit(),"utf-8",0) * Let's get the id information out of the access token. * Our JSON looks like this: * {"accessToken":"eyJ0eXAiO---TdjT3RjIn0.eyJhdWQiOiJo---jEuMCJ9.CIx0sUT8s---KvzKKUw"} * I used "---" instead of "..." to indicate a large quantity of omitted chars. * The accessToken is a long string composed of 3 base64 strings concatenated with "." chars. * The 1st part is the JOSE header. If you decode from base64, you'll get the JSON JOSE header. * The 2nd part is the id token. When decoded this is the JSON that contains information about the authenticated application. * The 3rd part is binary and does not decode to JSON. * Let's get the information from the 2nd part (the id token) loSa = CreateObject('Chilkat_9_5_0.StringArray') loSa.SplitAndAppend(loJson.StringOf("accessToken"),".") loSbIdToken = CreateObject('Chilkat_9_5_0.StringBuilder') * The 2nd string is at index 1. loSbIdToken.Append(loSa.GetString(1)) loSbIdToken.Decode("base64","utf-8") loJsonIdToken = CreateObject('Chilkat_9_5_0.JsonObject') loJsonIdToken.LoadSb(loSbIdToken) loJsonIdToken.EmitCompact = 0 ? loJsonIdToken.Emit() * We have something like this: * { * "aud": "https://outlook.office365.com/", * "iss": "https://sts.windows.net/6e8ddd66-68d1-43b0-af5c-e31b4b7dd5cd/", * "iat": 1586350465, * "nbf": 1586350465, * "exp": 1586354365, * "aio": "42dgYNjyOtX8ZZB7JLfMFJGeKUmvAA==", * "app_displayname": "ChilkatTest", * "appid": "f125d695-c50e-456e-a578-a486f06d1213", * "appidacr": "1", * "idp": "https://sts.windows.net/6d8ddd66-68d1-43b0-af5c-e31b4b7dd5cd/", * "oid": "7545a2fd-3f0d-48a4-9c58-a1a5700a24b1", * "sid": "ab981252-9378-4d0c-964b-eb2e1451138f", * "sub": "7546a2fc-3f0d-48a4-9c58-a1a5700a24b1", * "tid": "6d8ddd66-68d1-43b0-af5c-e31b4b7dd5cd", * "uti": "huIJBAa1tvGpczwV5S1BAA", * "ver": "1.0" * } * Get the desired information from the JSON: lcAud = loJsonIdToken.StringOf("aud") lcIss = loJsonIdToken.StringOf("iss") lnIat = loJsonIdToken.IntOf("iat") lnNbf = loJsonIdToken.IntOf("nbf") lnExp = loJsonIdToken.IntOf("exp") lcAio = loJsonIdToken.StringOf("aio") lcApp_displayname = loJsonIdToken.StringOf("app_displayname") lcAppid = loJsonIdToken.StringOf("appid") lcAppidacr = loJsonIdToken.StringOf("appidacr") lcIdp = loJsonIdToken.StringOf("idp") lcOid = loJsonIdToken.StringOf("oid") lcSid = loJsonIdToken.StringOf("sid") lcS_sub = loJsonIdToken.StringOf("sub") lcTid = loJsonIdToken.StringOf("tid") lcUti = loJsonIdToken.StringOf("uti") lcVer = loJsonIdToken.StringOf("ver") RELEASE loSocket RELEASE loAzureAD RELEASE loJson RELEASE loFac RELEASE loSa RELEASE loSbIdToken RELEASE loJsonIdToken |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.