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
(PowerBuilder) Decode Microsoft Graph ID TokenDemonstrates how to decode a Microsoft Graph ID token.
integer li_rc oleobject loo_JsonToken integer li_Success oleobject loo_Jwt string ls_IdToken string ls_Jose oleobject loo_JsonHeader string ls_Claims oleobject loo_JsonClaims string ls_Ver string ls_Iss string ls_S_sub string ls_Aud integer li_Exp integer li_Iat integer li_Nbf string ls_Name string ls_Preferred_username string ls_Oid string ls_Tid string ls_Aio // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. // In a previous example, we obtained a Microsoft Graph OAuth2 access token. // This example loads the JSON saved from the previous example and decodes the id_token. // Our Microsoft Graph OAuth2 token looks like this: // { // "token_type": "Bearer", // "scope": "openid profile User.ReadWrite Mail.ReadWrite Mail.Send Files.ReadWrite User.Read Calendars.ReadWrite Group.ReadWrite.All", // "expires_in": 3600, // "ext_expires_in": 3600, // "access_token": "EwCQA8l6...0HhMKYwC", // "refresh_token": "MCWulIvzi2yD0S...igEFn51mqcByhZtAJg", // "id_token": "eyJ0eXAiOiJKV1...Q7lRDaR-7A", // "expires_on": "1562862714" // } loo_JsonToken = create oleobject // Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0 li_rc = loo_JsonToken.ConnectToNewObject("Chilkat.JsonObject") if li_rc < 0 then destroy loo_JsonToken MessageBox("Error","Connecting to COM object failed") return end if li_Success = loo_JsonToken.LoadFile("qa_data/tokens/microsoftGraph.json") if li_Success = 0 then Write-Debug "Failed to load the JSON file..." destroy loo_JsonToken return end if // Use Chilkat's JWT API to examine the id_token.. loo_Jwt = create oleobject // Use "Chilkat_9_5_0.Jwt" for versions of Chilkat < 10.0.0 li_rc = loo_Jwt.ConnectToNewObject("Chilkat.Jwt") ls_IdToken = loo_JsonToken.StringOf("id_token") // Extract the JOSE header.. ls_Jose = loo_Jwt.GetHeader(ls_IdToken) loo_JsonHeader = create oleobject // Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0 li_rc = loo_JsonHeader.ConnectToNewObject("Chilkat.JsonObject") loo_JsonHeader.Load(ls_Jose) loo_JsonHeader.EmitCompact = 0 Write-Debug loo_JsonHeader.Emit() // The JOSE header looks like this: // { // "typ": "JWT", // "alg": "RS256", // "kid": "1LTMzakihiRla_8z2BEJVXeWMqo" // } ls_Claims = loo_Jwt.GetPayload(ls_IdToken) loo_JsonClaims = create oleobject // Use "Chilkat_9_5_0.JsonObject" for versions of Chilkat < 10.0.0 li_rc = loo_JsonClaims.ConnectToNewObject("Chilkat.JsonObject") loo_JsonClaims.Load(ls_Claims) loo_JsonClaims.EmitCompact = 0 Write-Debug loo_JsonClaims.Emit() // The claims look like this: // { // "ver": "2.0", // "iss": "https://login.microsoftonline.com/9188040d-6c67-4c5b-b112-36a304b66dad/v2.0", // "sub": "AAAAAAAAAAAAAAAAAAAAAHJFryd6Gydo-XtTd1nhUNQ", // "aud": "18c456bd-db75-43fe-9724-9e5d821c68ff", // "exp": 1562945513, // "iat": 1562858813, // "nbf": 1562858813, // "name": "Matt Chilkat", // "preferred_username": "matt@example.com", // "oid": "00000000-0000-0000-3a33-fceb9b74cc15", // "tid": "9188040d-6c67-4c5b-b112-36a304b66dad", // "aio": "DfibJqKnWC1c0FS6G ... W6pvTrQuYzyq16ghY$" // } // // Use this online tool to generate parsing code from sample JSON: // Generate Parsing Code from JSON // Get each of the claims.. ls_Ver = loo_JsonClaims.StringOf("ver") ls_Iss = loo_JsonClaims.StringOf("iss") ls_S_sub = loo_JsonClaims.StringOf("sub") ls_Aud = loo_JsonClaims.StringOf("aud") li_Exp = loo_JsonClaims.IntOf("exp") li_Iat = loo_JsonClaims.IntOf("iat") li_Nbf = loo_JsonClaims.IntOf("nbf") ls_Name = loo_JsonClaims.StringOf("name") ls_Preferred_username = loo_JsonClaims.StringOf("preferred_username") ls_Oid = loo_JsonClaims.StringOf("oid") ls_Tid = loo_JsonClaims.StringOf("tid") ls_Aio = loo_JsonClaims.StringOf("aio") destroy loo_JsonToken destroy loo_Jwt destroy loo_JsonHeader destroy loo_JsonClaims |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.