raben2 / oktasdk-go

OKTA REST API Client for Go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

OKTA SDK for GoLang (Unofficial)

NOTE: There is an Official GO SDK under developement okta/okta-sdk-golang

An SDK to integrate with the OKTA SDK for Golang.

Much credits has to be given to the go-github library for which this package mimics. I stole a huge amount of code and ideas from that project.

Warnings (There are many)

  • I have far from mastered the Go language.
  • This is not a complete SDK. It has been developed based on my own needs.
  • Use At your own risk!
  • Not all features of the OKTA API are implemented.
  • There are a long list of TODOS.
  • The current version of the API is focused more around retrieving data from OKTA not actually updating.

Current State

The current state of the this SDK is in development. There is still much work to be done. Currently, we have basic user and group functionality working. We just focus on doing reads from OKTA and have not focused on doing updates.

Operations

  • User
    • Create User (Implemented) ☑
      • Create User without password (Implemented in user.Create ) ☑
        • See Examples examples/userExamples.go createUserNoPassword()
      • Create User with password (Implemented in user.Create ) ☑
        • See Examples examples/userExamples.go createUserWithPassword()
    • Get user
      • Me (Implemented using Users.GetByID pass "me" as parameter) ☑
      • By ID (Implemented Users.GetByID) ☑
      • By Login (Implemented via Users.ListWithFilter passing in Login as filter parameter) ☑
      • List User by various filters (Implemented via Users.ListWithFilter) ☑
        • status, lastupdated, id, profile.login, profile.email, profile.firstName, profile.lastName
      • List User with Search (Early Access) (NOT Implemented) ☹
    • update User (NOT Implemented) ☹
      • password ☹
      • user object ☹
    • Groups - get user groups (Implemented with Users.PopulateGroups) ☑
    • activate (implemented in Users.Activate) ☑
    • deactivate (implemented in Users.Deactivate) ☑
    • suspend (implemented in Users.Suspend) ☑
    • unsuspend (implemented in Users.Unsuspend) ☑
    • unlock (implemented in Users.Unlock) ☑
    • reset_password (implemented in Users.ResetPassword) ☑
    • SetPassword (Implemented in Users.SetPassword) ☑
    • expire_password (NOT Implemented) ☹
    • reset_factors (NOT Implemented) ☹
    • forgotpassword (NOT Implemented) ☹
    • change_recovery_question (NOT Implemented) ☹
    • List Enrolled Factors (implemented in Users.PopulateEnrolledFactors) ☑
  • Roles (Admin Roles) (NOT Implemented) ☹
  • Groups (okta.Groups)
    • Get Group (Implemented with Groups.GetByID) ☑
    • List Groups (Implemented with Groups.ListWithFilter) ☑
    • Add Group (Implemented Groups.Add) ☑
    • Update Group (NOT Implemented) ☹
    • Delete Group (Implemented Groups.Delete) ☑
    • Group Members (Implemented with Groups.GetUsers)
    • Add User To Group (implemented in Groups.AddUserToGroup) ☑
    • Remove User From Group (Implemented in RemoveUserFromGroup) ☑
    • List Apps (NOT Implemented) ☹
  • Factors (NOT Implemented)
    • Get user FActor(s) (NOT Implemented) ☹
    • (implemented in Users.PopulateEnrolledFactors) ☑
    • Eligible factors (NOT Implemented) ☹
    • Enroll in factor (NOT Implemented) ☹
    • reset factor (NOT Implemented) ☹
    • verify factors (NOT Implemented) ☹
  • Apps (Barely Implemented)
    • get App (Apps.GetByID) ☑
    • get App Users (Apps.GetUsers) ☑
    • Get APP Groups (Implemented in Apps.GetGroups) ☑
    • Get App User (Implemented in Apps.GetUser) ☑
    • Many more API Interactions to go ☹

OKTA Links

Important OKTA Links

http://developer.okta.com/docs/api/getting_started/design_principles.html

Example code

There are several runnable examples in the /examples directory. You can run them by using the following:

First you need two environment variables configured:

  • OKTA_API_TEST_ORG - The Orgname of your "Preview OKTA Environment"
  • OKTA_API_TEST_TOKEN - An API Token for your preview ORG
cd $GOPATH/src/github.com/chrismalek/oktasdk-go
go run examples/*.go

You can see some examples in that code in the usage:

  • /examples/userExamples.go - Examples Using the User Client
  • /examples/groupExamples.go - Exaples using the Group Client

About

OKTA REST API Client for Go

License:MIT License


Languages

Language:Go 100.0%