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) Duo Auth API - Async AuthSee more Duo Auth MFA ExamplesIf you enable async, then your application will be able to retrieve real-time status updates from the authentication process, rather than receiving no information until the process is complete. Note: This example requires Chilkat v9.5.0.89 or greater. For more information, see https://duo.com/docs/authapi#/auth_status
' This example assumes the Chilkat API to have been previously unlocked. ' See Global Unlock Sample for sample code. Dim integrationKey As String integrationKey = "DIMS3V5QDVG9J9ABRXC4" Dim secretKey As String secretKey = "HWVQ46nubLBxhnRlKddTltWIi3hL0fIQF2qTvLab" Dim http As New ChilkatHttp http.Accept = "application/json" ' Use your own hostname here: Dim url As String url = "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. http.Login = integrationKey http.Password = secretKey Dim req As New ChilkatHttpRequest req.AddParam "username","matt" req.AddParam "factor","push" ' The device ID can be obtained from the preauth response. See Duo Preauth Example req.AddParam "device","DP6GYVTQ5NK82BMR851F" ' Add the async param to get an immediate response, then periodically check for updates to find out when the MFA authentication completes for fails. req.AddParam "async","1" Dim resp As ChilkatHttpResponse Set resp = http.PostUrlEncoded(url,req) If (http.LastMethodSuccess = 0) Then Debug.Print http.LastErrorText Exit Sub End If Debug.Print "status code = " & resp.StatusCode Dim json As New ChilkatJsonObject Dim success As Long success = json.Load(resp.BodyStr) json.EmitCompact = 0 Debug.Print json.Emit() If (resp.StatusCode <> 200) Then Exit Sub End If ' Sample successful output: ' status code = 200 ' { ' "stat": "OK", ' "response": { ' "txid": "45f7c92b-f45f-4862-8545-e0f58e78075a" ' } ' } Dim txid As String txid = json.StringOf("response.txid") ' Use your own hostname here: Dim sbUrl As New ChilkatStringBuilder success = sbUrl.Append("https://api-a03782e1.duosecurity.com/auth/v2/auth_status?txid=") success = sbUrl.Append(txid) Debug.Print "Auth status URL: " & sbUrl.GetAsString() Dim sbResult As New ChilkatStringBuilder Dim responseStatus As String Dim responseStatus_msg As String ' Wait for a response... Dim i As Long i = 0 Dim maxWaitIterations As Long maxWaitIterations = 100 Do While i < maxWaitIterations ' Wait 3 seconds. http.SleepMs 3000 Debug.Print "Polling..." Set resp = http.QuickRequest("GET",sbUrl.GetAsString()) If (http.LastMethodSuccess = 0) Then Debug.Print http.LastErrorText Exit Sub End If If (resp.StatusCode <> 200) Then Debug.Print "error status code = " & resp.StatusCode Debug.Print resp.BodyStr Debug.Print "Failed." Exit Sub End If ' Sample response: ' { ' "stat": "OK", ' "response": { ' "result": "waiting", ' "status": "pushed", ' "status_msg": "Pushed a login request to your phone..." ' } ' } success = json.Load(resp.BodyStr) ' The responseResult can be "allow", "deny", or "waiting" sbResult.Clear success = json.StringOfSb("response.result",sbResult) responseStatus = json.StringOf("response.status") responseStatus_msg = json.StringOf("response.status_msg") Debug.Print sbResult.GetAsString() Debug.Print responseStatus Debug.Print responseStatus_msg Debug.Print "" If (sbResult.ContentsEqual("waiting",1) = 1) Then i = i + 1 Else ' Force loop exit.. i = maxWaitIterations End If Loop Debug.Print "Finished." |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.