Tutorials

This article has 303 words.

Connecting to Active Directory

What do you need?

  1. the OU from which you will want to enlist users. In this article we will use “OU=My Company,DC=ad-lab-domain,DC=local”.
  2. token to connect to okKoala. Log in to your okKoala admin account, go to Settings > Integration > API Token > Show.

Step 1: Testing the data

Prepare a Powershell script, insert and run the following code.Take into account which OU you want to retrieve users from.

$users = Get-ADUser -Filter * -SearchBase "OU=My Company,DC=ad-lab-domain,DC=local"

foreach ($user in $users) {
    $body = @{
        "email" = $user.UserPrincipalName;
        "first_name" = $user.GivenName;
        "last_name" = $user.Surname;
    }
    $body
}

In our example, we have this result:

Name                           Value
----                           -----
email                          john.smith@ad-lab-domain.local
last_name                      Smith
first_name                     John
email                          jane.doe@ad-lab-domain.local
last_name                      Doe
first_name                     Jane
email                          jan.kowalski@ad-lab-domain.local
last_name                      Kowalski
first_name                     Jan

You may have to change the parameter so that, for example, the email is not retrieved from the UPN ($user.UserPrincipalName), but from the email field ($user.EmailAddress).

Step 2: Create the connection

Modify the following script according to what you did in the previous step. In place of <TOKEN FROM KOALI> insert your admin token from okKoala.

$headers = @{
    "Authorization"= "<KOALA's TOKEN>";
}

$users = Get-ADUser -Filter * -SearchBase "OU=My Company,DC=ad-lab-domain,DC=local"

foreach ($user in $users) {
    $body = @{
        "email" = $user.UserPrincipalName;
        "first_name" = $user.GivenName;
        "last_name" = $user.Surname;
    }

    try {
        $resp = Invoke-WebRequest -Uri "https://api.okkoala.com/users" `
            -Headers $headers `
            -Method POST `
            -Body ($body|ConvertTo-Json) `
            -ContentType "application/json" `

        $resp

        If ($resp.StatusCode -gt 199 -and $resp.StatusCode -lt 300) {
            $status = "OK"
        } Else {
            $status = "Error"
        }
        Write-Host $params.email ":" $status
    } catch {
        $_.Exception
    }
}

Run the script, users will appear in the okKoala panel. There you can assign licenses.

(Optional) Step 3: Create a synchronization schedule.

You can add the prepared script to tasks on the server. Follow the Microsoft documentation:

https://learn.microsoft.com/en-us/training/modules/create-manage-scheduled-jobs-use-windows-powershell/