Chilkat HOME Android™ Classic ASP C C++ C# Mono C# .NET Core C# C# UWP/WinRT DataFlex Delphi ActiveX Delphi DLL Visual FoxPro Java Lianja MFC Objective-C Perl PHP ActiveX PHP Extension PowerBuilder PowerShell PureBasic CkPython Chilkat2-Python Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ Visual Basic 6.0 VB.NET VB.NET UWP/WinRT VBScript Xojo Plugin Node.js Excel Go
(Excel) 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. integrationKey = "DIMS3V5QDVG9J9ABRXC4" secretKey = "HWVQ46nubLBxhnRlKddTltWIi3hL0fIQF2qTvLab" Dim http As Chilkat.Http Set http = Chilkat.NewHttp http.Accept = "application/json" ' Use your own hostname here: 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 Chilkat.HttpRequest Set req = Chilkat.NewHttpRequest 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" Set resp = http.PostUrlEncoded(url,req) If (http.LastMethodSuccess = False) Then Debug.Print http.LastErrorText Exit Sub End If Debug.Print "status code = "; resp.StatusCode Dim json As Chilkat.JsonObject Set json = Chilkat.NewJsonObject success = json.Load(resp.BodyStr) json.EmitCompact = False 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" ' } ' } txid = json.StringOf("response.txid") ' Use your own hostname here: Dim sbUrl As Chilkat.StringBuilder Set sbUrl = Chilkat.NewStringBuilder Dim success As Boolean 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 Chilkat.StringBuilder Set sbResult = Chilkat.NewStringBuilder ' Wait for a response... i = 0 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 = False) 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",True) = True) Then i = i + 1 Else ' Force loop exit.. i = maxWaitIterations End If Loop Debug.Print "Finished." |
© 2000-2022 Chilkat Software, Inc. All Rights Reserved.