Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save karlmcguinness-okta/b53c60f5847b0e35cdfb to your computer and use it in GitHub Desktop.

Select an option

Save karlmcguinness-okta/b53c60f5847b0e35cdfb to your computer and use it in GitHub Desktop.
Okta Verify Push Auth API

#Enroll (From UserAgent):

Request

POST {{url}}/api/v1/users/{{userId}}/factors

{
  "factorType": "push",
  "provider": "OKTA"
}

Response

{
  "id": "opfh52xcuft3J4uZc0g3",
  "factorType": "push",
  "provider": "OKTA",
  "status": "PENDING_ACTIVATION",
  "created": "2015-04-01T15:57:32.000Z",
  "lastUpdated": "2015-04-01T15:57:32.000Z",
  "profile": {

  },
  "_links": {
    "activate": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3/factors/opfh52xcuft3J4uZc0g3/lifecycle/activate",
      "hints": {
        "allow": [
          "POST"
        ]
      }
    },
    "self": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3/factors/opfh52xcuft3J4uZc0g3",
      "hints": {
        "allow": [
          "GET"
        ]
      }
    },
    "user": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3",
      "hints": {
        "allow": [
          "GET"
        ]
      }
    },
    "qrcode": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3/factors/opfh52xcuft3J4uZc0g3/qr/00CnAHABTzHh9hjEij9qcteMrOoeFLK6evHruUH7p9",
      "type": "image/png"
    }
  },
  "_embedded": {
    "activation": {
      "deviceActivationToken": "I17JQoOqbYOPH_lMWK5F"
    }
  }
}

After Activation:

##Request

GET {{url}}/api/v1/users/{{userId}}/factors/{{factorId}}?expand=device

##Response:

{
  "id": "opfh52xcuft3J4uZc0g3",
  "factorType": "push",
  "provider": "OKTA",
  "status": "ACTIVE",
  "created": "2015-04-01T15:57:32.000Z",
  "lastUpdated": "2015-04-01T16:04:56.000Z",
  "profile": {
    "keys": [
      {
        "kty": "PKIX",
        "use": "sig",
        "kid": "default",
        "x5c": [
          "MIIDPDCCAiQCCQDydJgOlszqbzANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNU2FuIEZyYW5jaXNjbzEQMA4GA1UEChMHSmFua3lDbzESMBAGA1UEAxMJbG9jYWxob3N0MB4XDTE0MDMxMjE5NDYzM1oXDTI3MTExOTE5NDYzM1owYDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAUBgNVBAcTDVNhbiBGcmFuY2lzY28xEDAOBgNVBAoTB0phbmt5Q28xEjAQBgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMGvJpRTTasRUSPqcbqCG+ZnTAurnu0vVpIG9lzExnh11o/BGmzu7lB+yLHcEdwrKBBmpepDBPCYxpVajvuEhZdKFx/Fdy6j5mH3rrW0Bh/zd36CoUNjbbhHyTjeM7FN2yF3u9lcyubuvOzr3B3gX66IwJlU46+wzcQVhSOlMk2tXR+fIKQExFrOuK9tbX3JIBUqItpI+HnAow509CnM134svw8PTFLkR6/CcMqnDfDK1m993PyoC1Y+N4X9XkhSmEQoAlAHPI5LHrvuujM13nvtoVYvKYoj7ScgumkpWNEvX652LfXOnKYlkB8ZybuxmFfIkzedQrbJsyOhfL03cMECAwEAATANBgkqhkiG9w0BAQUFAAOCAQEAeHwzqwnzGEkxjzSD47imXaTqtYyETZow7XwBc0ZaFS50qRFJUgKTAmKS1xQBP/qHpStsROT35DUxJAE6NY1Kbq3ZbCuhGoSlY0L7VzVT5tpu4EY8+Dq/u2EjRmmhoL7UkskvIZ2n1DdERtd+YUMTeqYl9co43csZwDno/IKomeN5qaPc39IZjikJ+nUC6kPFKeu/3j9rgHNlRtocI6S1FdtFz9OZMQlpr0JbUt2T3xS/YoQJn6coDmJL5GTiiKM6cOe+Ur1VwzS1JEDbSS2TWWhzq8ojLdrotYLGd9JOsoQhElmz+tMfCFQUFLExinPAyy7YHlSiVX13QH2XTu/iQQ=="
        ]
      }
    ]
  },
  "_embedded": {
    "device": {
      "id": "mbdg6uYNMQTFLDUUICST",
      "status": "ACTIVE",
      "created": "2014-08-20T04:53:45.000Z",
      "lastUpdated": "2014-08-20T04:55:02.000Z",
      "profile": {
        "udid": "33ec98baeba682a74cf87b73e5526f87fc8c4734",
        "platform": "IOS",
        "deviceType": "SMARTPHONE",
        "name": "karl iPhone",
        "version": "8.1",
        "serial": "F4KLVLTAFCM8"
      }
    }
  },
  "_links": {
    "self": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3/factors/opfh52xcuft3J4uZc0g3",
      "hints": {
        "allow": [
          "GET",
          "DELETE"
        ]
      }
    },
    "verify": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3/factors/opfh52xcuft3J4uZc0g3/verify",
      "hints": {
        "allow": [
          "POST"
        ]
      }
    },    
    "user": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3",
      "hints": {
        "allow": [
          "GET"
        ]
      }
    },
    "device": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3/devices/mbdg6uYNMQTFLDUUICST",
      "hints": {
        "allow": [
          "GET"
        ]
      }
    }
  }
}

###Gaps/Issues:

  1. Add "reset" link

Start Challenge:

Request

POST {{url}}/api/v1/users/{{userId}}/factors/{{factorId}}/verify

Response

HTTP/1.1 202 Accepted
Location: https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3/factors/opfh52xcuft3J4uZc0g3/verify/mst1eiHghhPxf0yhp0g3

{
  "factorResult": "WAITING",
  "_links": {
    "poll": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3/factors/opfh52xcuft3J4uZc0g3/verify/mst1eiHghhPxf0yhp0g",
      "hints": {
        "allow": [
          "GET"
        ]
      }
    },
    "cancel": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3/factors/opfh52xcuft3J4uZc0g3/verify/mst1eiHghhPxf0yhp0g",
      "hints": {
        "allow": [
          "DELETE"
        ]
      }
    }
  }
}

Poll

Request:

GET {{url}}/api/v1/users/{{userId}}/factors/{{factorId}}/verify/{{transactionId}}

Response:

{
  "factorResult": "WAITING",
  "_links": {
    "poll": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3/factors/opfh52xcuft3J4uZc0g3/verify/mst1eiHghhPxf0yhp0g",
      "hints": {
        "allow": [
          "GET"
        ]
      }
    },
    "cancel": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3/factors/opfh52xcuft3J4uZc0g3/verify/mst1eiHghhPxf0yhp0g",
      "hints": {
        "allow": [
          "DELETE"
        ]
      }
    }
  }
}

After Auth is Approved on Device:

Request:

GET {{url}}/api/v1/users/{{userId}}/factors/{{factorId}}/verify/{{transactionId}}

Response:

{
  "factorResult": "SUCCESS"
}

When timed-out:

Request:

**GET {{url}}/api/v1/users/{{userId}}/factors/{{factorId}}/verify/{{transactionId}}

Response:

{
  "factorResult": "TIMEOUT",
  "_links": {
    "verify": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3/factors/opfh52xcuft3J4uZc0g3/verify",
      "hints": {
        "allow": [
          "POST"
        ]
      }
    },
    "factor": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3/factors/opfh52xcuft3J4uZc0g3",
      "hints": {
        "allow": [
          "GET",
          "DELETE"
        ]
      }
    }
  }
}

When Rejected:

Request:

**GET {{url}}/api/v1/users/{{userId}}/factors/{{factorId}}/verify/{{transactionId}}

Response:

{
  "factorResult": "REJECTED",
  "_links": {
    "verify": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3/factors/opfh52xcuft3J4uZc0g3/verify",
      "hints": {
        "allow": [
          "POST"
        ]
      }
    },
    "factor": {
      "href": "https://nag.okta1.com:80/api/v1/users/00ugti3kwafWJBRIY0g3/factors/opfh52xcuft3J4uZc0g3",
      "hints": {
        "allow": [
          "GET",
          "DELETE"
        ]
      }
    }
  }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment