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
(PureBasic) Duo Auth API - AuthSee more Duo Auth MFA ExamplesThe /auth endpoint performs second-factor authentication for a user by sending a push notification to the user's smartphone app, verifying a passcode, or placing a phone call. It is also used to send the user a new batch of passcodes via SMS. Note: This example requires Chilkat v9.5.0.89 or greater. For more information, see https://duo.com/docs/authapi#/auth
IncludeFile "CkHttpResponse.pb" IncludeFile "CkHttp.pb" IncludeFile "CkJsonObject.pb" IncludeFile "CkHttpRequest.pb" Procedure ChilkatExample() ; This example assumes the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. integrationKey.s = "DIMS3V5QDVG9J9ABRXC4" secretKey.s = "HWVQ46nubLBxhnRlKddTltWIi3hL0fIQF2qTvLab" http.i = CkHttp::ckCreate() If http.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkHttp::setCkAccept(http, "application/json") ; Use your own hostname here: url.s = "https://api-a03782e1.duosecurity.com/auth/v2/auth" ; This example requires Chilkat v9.5.0.89 or greater because Chilkat will automatically ; generate and send the HMAC signature for the requires based on the integration key and secret key. CkHttp::setCkLogin(http, integrationKey) CkHttp::setCkPassword(http, secretKey) req.i = CkHttpRequest::ckCreate() If req.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkHttpRequest::ckAddParam(req,"username","matt") CkHttpRequest::ckAddParam(req,"factor","push") ; The device ID can be obtained from the preauth response. See Duo Preauth Example CkHttpRequest::ckAddParam(req,"device","DP6GYVTQ5NK82BMR851F") resp.i = CkHttp::ckPostUrlEncoded(http,url,req) If CkHttp::ckLastMethodSuccess(http) = 0 Debug CkHttp::ckLastErrorText(http) CkHttp::ckDispose(http) CkHttpRequest::ckDispose(req) ProcedureReturn EndIf Debug "status code = " + Str(CkHttpResponse::ckStatusCode(resp)) json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkJsonObject::ckLoad(json,CkHttpResponse::ckBodyStr(resp)) CkJsonObject::setCkEmitCompact(json, 0) Debug CkJsonObject::ckEmit(json) CkHttpResponse::ckDispose(resp) ; Sample successful output: ; status code = 200 ; { ; "response": { ; "result": "allow", ; "status": "allow", ; "status_msg": "Success. Logging you in..." ; }, ; "stat": "OK" ; } ; Sample code to parse the above JSON response.. ; Use this online tool to generate parsing code from sample JSON: ; Generate Parsing Code from JSON responseResult.s = CkJsonObject::ckStringOf(json,"response.result") responseStatus.s = CkJsonObject::ckStringOf(json,"response.status") responseStatus_msg.s = CkJsonObject::ckStringOf(json,"response.status_msg") stat.s = CkJsonObject::ckStringOf(json,"stat") CkHttp::ckDispose(http) CkHttpRequest::ckDispose(req) CkJsonObject::ckDispose(json) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.