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 Basic 6.0) 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.
' This example requires the Chilkat API to have been previously unlocked. ' See Global Unlock Sample for sample code. Dim socket As New ChilkatSocket ' Make a TLS connection to login.microsoftonline.com, waiting at most 5000 milliseconds. Dim success As Long success = socket.Connect("login.microsoftonline.com",443,1,5000) If (success <> 1) Then Debug.Print socket.LastErrorText Exit Sub End If ' Create an Azure AD auth object, and provide the required information for authorization. Dim azureAD As New ChilkatAuthAzureAD azureAD.ClientId = "AZURE_AD_CLIENT_ID" azureAD.ClientSecret = "AZURE_AD_CLIENT_SECRET" azureAD.TenantId = "AZURE_TENANT_ID" azureAD.Resource = "https://outlook.office365.com/" ' Retrieve the access token using the TLS connection to login.microsoftonline.com success = azureAD.ObtainAccessToken(socket) If (success <> 1) Then Debug.Print socket.LastErrorText Exit Sub End If ' Show the access token, and then save it to a JSON file ' for future use (such as with a REST method call). Debug.Print "Azure AD Access Token = " & azureAD.AccessToken Dim json As New ChilkatJsonObject success = json.AppendString("accessToken",azureAD.AccessToken) ' Save our access token to a file. It will be used in subsequent REST API calls. Dim fac As New CkFileAccess success = fac.WriteEntireTextFile("qa_data/tokens/azureAD_office365.json",json.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) Dim sa As New CkStringArray sa.SplitAndAppend json.StringOf("accessToken"),"." Dim sbIdToken As New ChilkatStringBuilder ' The 2nd string is at index 1. success = sbIdToken.Append(sa.GetString(1)) success = sbIdToken.Decode("base64","utf-8") Dim jsonIdToken As New ChilkatJsonObject success = jsonIdToken.LoadSb(sbIdToken) jsonIdToken.EmitCompact = 0 Debug.Print jsonIdToken.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: Dim aud As String aud = jsonIdToken.StringOf("aud") Dim iss As String iss = jsonIdToken.StringOf("iss") Dim iat As Long iat = jsonIdToken.IntOf("iat") Dim nbf As Long nbf = jsonIdToken.IntOf("nbf") Dim exp As Long exp = jsonIdToken.IntOf("exp") Dim aio As String aio = jsonIdToken.StringOf("aio") Dim app_displayname As String app_displayname = jsonIdToken.StringOf("app_displayname") Dim appid As String appid = jsonIdToken.StringOf("appid") Dim appidacr As String appidacr = jsonIdToken.StringOf("appidacr") Dim idp As String idp = jsonIdToken.StringOf("idp") Dim oid As String oid = jsonIdToken.StringOf("oid") Dim sid As String sid = jsonIdToken.StringOf("sid") Dim s_sub As String s_sub = jsonIdToken.StringOf("sub") Dim tid As String tid = jsonIdToken.StringOf("tid") Dim uti As String uti = jsonIdToken.StringOf("uti") Dim ver As String ver = jsonIdToken.StringOf("ver") |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.