Xojo Plugin
Xojo Plugin
Duo Auth API - Preauth
See more Duo Auth MFA Examples
The /preauth endpoint determines whether a user is authorized to log in, and (if so) returns the user's available authentication factors.Chilkat Xojo Plugin Downloads
Dim success As Boolean
success = False
// 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 Chilkat.Http
http.Accept = "application/json"
// Use your own hostname here:
Dim url As String
url = "https://api-a03782e1.duosecurity.com/auth/v2/preauth"
http.Login = integrationKey
http.Password = secretKey
Dim req As New Chilkat.HttpRequest
req.AddParam "username","matt"
req.HttpVerb = "POST"
req.ContentType = "application/x-www-form-urlencoded"
Dim resp As New Chilkat.HttpResponse
success = http.HttpReq(url,req,resp)
If (success = False) Then
System.DebugLog(http.LastErrorText)
Return
End If
System.DebugLog("status code = " + Str(resp.StatusCode))
Dim json As New Chilkat.JsonObject
success = json.Load(resp.BodyStr)
json.EmitCompact = False
System.DebugLog(json.Emit())
// Sample successful output:
// status code = 200
// {
// "response": {
// "devices": [
// {
// "capabilities": [
// "auto",
// "push",
// "sms",
// "mobile_otp"
// ],
// "device": "DP6GYVTQ5NK82BMR851F",
// "display_name": "iOS (XXX-XXX-1871)",
// "name": "",
// "number": "XXX-XXX-1871",
// "type": "phone"
// }
// ],
// "result": "auth",
// "status_msg": "Account is active"
// },
// "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
Dim device As String
Dim display_name As String
Dim name As String
Dim number As String
Dim v_type As String
Dim j As Int32
Dim count_j As Int32
Dim strVal As String
Dim responseResult As String
responseResult = json.StringOf("response.result")
Dim responseStatus_msg As String
responseStatus_msg = json.StringOf("response.status_msg")
Dim stat As String
stat = json.StringOf("stat")
Dim i As Int32
i = 0
Dim count_i As Int32
count_i = json.SizeOfArray("response.devices")
While i < count_i
json.I = i
device = json.StringOf("response.devices[i].device")
display_name = json.StringOf("response.devices[i].display_name")
name = json.StringOf("response.devices[i].name")
number = json.StringOf("response.devices[i].number")
v_type = json.StringOf("response.devices[i].type")
j = 0
count_j = json.SizeOfArray("response.devices[i].capabilities")
While j < count_j
json.J = j
strVal = json.StringOf("response.devices[i].capabilities[j]")
j = j + 1
Wend
i = i + 1
Wend