-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathCreateOktaDirectory.ps1
46 lines (39 loc) · 1.85 KB
/
CreateOktaDirectory.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#Forces the use of TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$AccessURL = Read-Host -Prompt 'Enter your WS1 Access URL'
$Domain = Read-Host -Prompt 'Enter your New Domain'
$DirectoryName = Read-Host -Prompt 'Enter a name for your new Access Directory'
##Start-Sleep -s 30
$ClientId = Read-Host -Prompt 'Enter your OAuth Client ID'
$ClientSecret = Read-Host -Prompt 'Enter your Client Secret'
$text = "${ClientId}:${ClientSecret}"
$base64 = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($text))
$headers = @{
"Authorization"="Basic $base64";
"Accept" = "*/*"
}
$results = Invoke-WebRequest -Uri "https://$AccessURL/SAAS/auth/oauthtoken?grant_type=client_credentials" -Method POST -Headers $headers
$accessToken = ($results.Content | ConvertFrom-Json).access_token
$authHeader = @{
"Authorization"="Bearer $accessToken";
}
$global:workspaceOneAccessConnection = new-object PSObject -Property @{
'Server' = "https://$AccessURL"
'headers' = $authHeader
}
$global:workspaceOneAccessConnection
$dirHeaders = @{
"Accept"="application/vnd.vmware.horizon.manager.connector.management.directory.other+json"
"Content-Type"="application/vnd.vmware.horizon.manager.connector.management.directory.other+json"
"Authorization"=$global:workspaceOneAccessConnection.headers.Authorization;
}
$restheader = $restheader | ConvertTo-Json
##Build the Body##
$script:body = @{
"type" = "OTHER_DIRECTORY"
"domains" = @($Domain)
"name" = $DirectoryName
}
##Convert Body to Json##
$body = $body | ConvertTo-Json
Invoke-RestMethod -Uri "https://$AccessURL/SAAS/jersey/manager/api/connectormanagement/directoryconfigs" -Method POST -headers $dirHeaders -Body $Body