### Create Organization SDK and HTTP Examples Source: https://ssoready.com/docs/api-reference/management/organizations/create-organization Implementation examples for creating an organization across various programming languages. ```python import requests url = "https://api.ssoready.com/v1/organizations" payload = {} headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```typescript import { SSOReadyClient, SSOReady } from "ssoready"; const ssoReady = new SSOReadyClient({ apiKey: "YOUR_API_KEY" }); await ssoReady.management.organizations.createOrganization({}); ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.ssoready.com/v1/organizations" payload := strings.NewReader("{}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.ssoready.com/v1/organizations") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.ssoready.com/v1/organizations") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php request('POST', 'https://api.ssoready.com/v1/organizations', [ 'body' => '{}', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.ssoready.com/v1/organizations"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = [] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.ssoready.com/v1/organizations")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` -------------------------------- ### Get SCIM Directory SDK Examples Source: https://ssoready.com/docs/api-reference/management/scim-directories/get-scim-directory Examples for retrieving a SCIM directory using various programming languages. ```python import requests url = "https://api.ssoready.com/v1/scim-directories/id" headers = {"Authorization": "Bearer "} response = requests.get(url, headers=headers) print(response.json()) ``` ```typescript import { SSOReadyClient } from "ssoready"; const ssoReady = new SSOReadyClient({ apiKey: "YOUR_API_KEY" }); await ssoReady.management.scimDirectories.getScimDirectory("id"); ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.ssoready.com/v1/scim-directories/id" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Bearer ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.ssoready.com/v1/scim-directories/id") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.ssoready.com/v1/scim-directories/id") .header("Authorization", "Bearer ") .asString(); ``` ```php request('GET', 'https://api.ssoready.com/v1/scim-directories/id', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.ssoready.com/v1/scim-directories/id"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://api.ssoready.com/v1/scim-directories/id")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` -------------------------------- ### Create Setup URL Response Source: https://ssoready.com/docs/api-reference/management/setup-urls/create-setup-url The API returns a JSON object containing the generated setup URL. ```json { "url": "url" } ``` -------------------------------- ### Create SAML Connection SDK Examples Source: https://ssoready.com/docs/api-reference/management/saml-connections/create-saml-connection Implementation examples for creating a SAML connection using various programming languages and HTTP clients. ```python import requests url = "https://api.ssoready.com/v1/saml-connections" payload = {} headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```typescript import { SSOReadyClient, SSOReady } from "ssoready"; const ssoReady = new SSOReadyClient({ apiKey: "YOUR_API_KEY" }); await ssoReady.management.samlConnections.createSamlConnection({}); ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.ssoready.com/v1/saml-connections" payload := strings.NewReader("{}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.ssoready.com/v1/saml-connections") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.ssoready.com/v1/saml-connections") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php request('POST', 'https://api.ssoready.com/v1/saml-connections', [ 'body' => '{}', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.ssoready.com/v1/saml-connections"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = [] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.ssoready.com/v1/saml-connections")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` -------------------------------- ### Example Environment ID Source: https://ssoready.com/docs/ssoready-concepts/environments An example of a unique environment identifier starting with the env_ prefix. ```text env_579r04bhgwhl0zq7f3ynj8hh0 ``` -------------------------------- ### SCIM Base URL Examples Source: https://ssoready.com/docs/ssoready-concepts/scim-directories Examples of SCIM base URLs for standard and custom domains. ```text https://auth.ssoready.com/v1/scim/scim_directory_... ``` ```text https://auth.yourcompany.com/v1/scim/scim_directory_... ``` -------------------------------- ### Create SCIM Directory SDK and HTTP Examples Source: https://ssoready.com/docs/api-reference/management/scim-directories/create-scim-directory Implementation examples for creating a SCIM directory using various programming languages and HTTP clients. ```python import requests url = "https://api.ssoready.com/v1/scim-directories" payload = {} headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.post(url, json=payload, headers=headers) print(response.json()) ``` ```typescript import { SSOReadyClient, SSOReady } from "ssoready"; const ssoReady = new SSOReadyClient({ apiKey: "YOUR_API_KEY" }); await ssoReady.management.scimDirectories.createScimDirectory({}); ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.ssoready.com/v1/scim-directories" payload := strings.NewReader("{}") req, _ := http.NewRequest("POST", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.ssoready.com/v1/scim-directories") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.ssoready.com/v1/scim-directories") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php request('POST', 'https://api.ssoready.com/v1/scim-directories', [ 'body' => '{}', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.ssoready.com/v1/scim-directories"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = [] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.ssoready.com/v1/scim-directories")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` -------------------------------- ### SSOReady Callback URL Examples Source: https://ssoready.com/docs/saml/handling-saml-logins-jit-provisioning Examples of the callback URL structure and the request format received after a successful SAML login. ```text https://yourcompany.com/ssoready-callback ``` ```text https://yourcompany.com/ssoready-callback?saml_access_code=saml_access_code_... ``` -------------------------------- ### Update SAML Connection SDK and HTTP Examples Source: https://ssoready.com/docs/api-reference/management/saml-connections/update-saml-connection Implementation examples for updating a SAML connection across multiple programming languages. ```python import requests url = "https://api.ssoready.com/v1/saml-connections/id" payload = {} headers = { "Authorization": "Bearer ", "Content-Type": "application/json" } response = requests.patch(url, json=payload, headers=headers) print(response.json()) ``` ```typescript import { SSOReadyClient, SSOReady } from "ssoready"; const ssoReady = new SSOReadyClient({ apiKey: "YOUR_API_KEY" }); await ssoReady.management.samlConnections.updateSamlConnection("id", {}); ``` ```go package main import ( "fmt" "strings" "net/http" "io" ) func main() { url := "https://api.ssoready.com/v1/saml-connections/id" payload := strings.NewReader("{}") req, _ := http.NewRequest("PATCH", url, payload) req.Header.Add("Authorization", "Bearer ") req.Header.Add("Content-Type", "application/json") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.ssoready.com/v1/saml-connections/id") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Patch.new(url) request["Authorization"] = 'Bearer ' request["Content-Type"] = 'application/json' request.body = "{}" response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.patch("https://api.ssoready.com/v1/saml-connections/id") .header("Authorization", "Bearer ") .header("Content-Type", "application/json") .body("{}") .asString(); ``` ```php request('PATCH', 'https://api.ssoready.com/v1/saml-connections/id', [ 'body' => '{}', 'headers' => [ 'Authorization' => 'Bearer ', 'Content-Type' => 'application/json', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.ssoready.com/v1/saml-connections/id"); var request = new RestRequest(Method.PATCH); request.AddHeader("Authorization", "Bearer "); request.AddHeader("Content-Type", "application/json"); request.AddParameter("application/json", "{}", ParameterType.RequestBody); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = [ "Authorization": "Bearer ", "Content-Type": "application/json" ] let parameters = [] as [String : Any] let postData = JSONSerialization.data(withJSONObject: parameters, options: []) let request = NSMutableURLRequest(url: NSURL(string: "https://api.ssoready.com/v1/saml-connections/id")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "PATCH" request.allHTTPHeaderFields = headers request.httpBody = postData as Data let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` -------------------------------- ### List SCIM Users SDK and HTTP Examples Source: https://ssoready.com/docs/api-reference/scim/list-scim-users Examples demonstrating how to list SCIM users using various programming languages and HTTP clients. ```python import requests url = "https://api.ssoready.com/v1/scim/users" querystring = {"organizationExternalId":"my_custom_external_id"} headers = {"Authorization": "Bearer "} response = requests.get(url, headers=headers, params=querystring) print(response.json()) ``` ```typescript import { SSOReadyClient } from "ssoready"; const ssoReady = new SSOReadyClient({ apiKey: "YOUR_API_KEY" }); await ssoReady.scim.listScimUsers({ organizationExternalId: "my_custom_external_id" }); ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.ssoready.com/v1/scim/users?organizationExternalId=my_custom_external_id" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Bearer ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.ssoready.com/v1/scim/users?organizationExternalId=my_custom_external_id") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.ssoready.com/v1/scim/users?organizationExternalId=my_custom_external_id") .header("Authorization", "Bearer ") .asString(); ``` ```php request('GET', 'https://api.ssoready.com/v1/scim/users?organizationExternalId=my_custom_external_id', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.ssoready.com/v1/scim/users?organizationExternalId=my_custom_external_id"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://api.ssoready.com/v1/scim/users?organizationExternalId=my_custom_external_id")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` -------------------------------- ### XML Entity Expansion Output Example Source: https://ssoready.com/docs/saml/saml-technical-primer The canonicalized output of the provided XML entity expansion input example. ```xml 1| ---|--- 2| Hello, world! 3| ``` -------------------------------- ### Create Setup URL cURL Request Source: https://ssoready.com/docs/api-reference/management/setup-urls/create-setup-url Use this cURL command to generate a new setup URL. Ensure you replace with your actual SSOReady API key. ```bash curl -X POST https://api.ssoready.com/v1/setup-urls \ -H "Authorization: Bearer " \ -H "Content-Type: application/json" \ -d '{}' ``` -------------------------------- ### List SAML Connections SDK and HTTP Examples Source: https://ssoready.com/docs/api-reference/management/saml-connections/list-saml-connections Examples showing how to authenticate and request the list of SAML connections using various programming languages. ```python import requests url = "https://api.ssoready.com/v1/saml-connections" headers = {"Authorization": "Bearer "} response = requests.get(url, headers=headers) print(response.json()) ``` ```typescript import { SSOReadyClient } from "ssoready"; const ssoReady = new SSOReadyClient({ apiKey: "YOUR_API_KEY" }); await ssoReady.management.samlConnections.listSamlConnections(); ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.ssoready.com/v1/saml-connections" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Bearer ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.ssoready.com/v1/saml-connections") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.ssoready.com/v1/saml-connections") .header("Authorization", "Bearer ") .asString(); ``` ```php request('GET', 'https://api.ssoready.com/v1/saml-connections', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.ssoready.com/v1/saml-connections"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://api.ssoready.com/v1/saml-connections")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` -------------------------------- ### SCIM Directory ID Example Source: https://ssoready.com/docs/ssoready-concepts/scim-directories Example of a unique SCIM directory identifier. ```text scim_directory_aler4q1vev4x0uxoxxzk696ou ``` -------------------------------- ### SAML Connection ID Example Source: https://ssoready.com/docs/sso-ready-concepts/saml-connections Example of a unique SAML connection identifier starting with the saml_conn_ prefix. ```text saml_conn_56gbsrki2z8im0iejiamm9529 ``` -------------------------------- ### XML Entity Expansion Input Example Source: https://ssoready.com/docs/saml/saml-technical-primer Example input document demonstrating entity expansion as defined in the XML Canonicalization specification. ```xml 1| 3| 4| 5| 6| 7| ]> 8| 9| &ent1;, &ent2;! 10| 11| 12| ``` -------------------------------- ### Example SAML Assertion XML Source: https://ssoready.com/docs/saml/saml-technical-primer A base64-decoded SAMLResponse example from Okta showing the structure of the assertion, including the issuer, signature, and certificate. ```xml 1| http://www.okta.com/exkig8gdo63cjI4OD5d7LG8xAT5bB2FL8o080efFIvlxSgxo+XbHe7jpD0Zhboo=Pywv2l94wmFtmPgmUKSF7Q4gPPQbrWXTejp2FDHbm5g5NGBouUrYPKGcSfrysG/TUaUZevLiFc8VdkqUcThz+bPFgyt/ePomTJ1e2DfvAptK3wHjXYF88lZwk+p3JtJNohjfiq8wqEauSvM1jPpRfML3k5vOZS/diEzvrzaiB2noyupFZcCbgxSrdAdeVC6sjsUFu96FgjvHXwR41BCZftwrAanld7VZJ4P1GI30tJ6vwLh6H9ZvWx8MQ1vgMZuT2IDXifykeCLoo2GKqXyARIJGbzHzLWgRHBZqeDNskZWLg9HWjJy8eWpeye6OLs/7FuEj/GQGd/v8hMGoCL2U0A==MIIDqDCCApCgAwIBAgIGAZDMRerRMA0GCSqGSIb3DQEBCwUAMIGUMQswCQYDVQQGEwJVUzETMBEG 2| A1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsGA1UECgwET2t0YTEU 3| MBIGA1UECwwLU1NPUHJvdmlkZXIxFTATBgNVBAMMDGRldi05MjI1NDYzMjEcMBoGCSqGSIb3DQEJ 4| ARYNaW5mb0Bva3RhLmNvbTAeFw0yNDA3MTkxODMzMTJaFw0zNDA3MTkxODM0MTJaMIGUMQswCQYD 5| VQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNU2FuIEZyYW5jaXNjbzENMAsG 6| A1UECgwET2t0YTEUMBIGA1UECwwLU1NPUHJvdmlkZXIxFTATBgNVBAMMDGRldi05MjI1NDYzMjEc 7| MBoGCSqGSIb3DQEJARYNaW5mb0Bva3RhLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC 8| ggEBALnkZbxmKDN9vSl7vwR1GgHXRLCQmvItOM8mbF19EUlx12tXzmA1wmafxZBo8+Zr7v4N9K+m 9| MPWlpNr9MKO0wUkrsv9NzuQeRXowHVsiQ6O2Vaxsb1o9kxjpR/Cego/sT2Cw2A8sACeQhWoQoe1h 10| jHOzIfvKf2OBpQ/BaelRCqZbYE9doZc1ufEp9xz6nSFRwJbF37pPo89qGeFPrYbsJkydysOM8SKO 11| On55UI8dv0iI0msQvBegPa1Bvauex0/UcIq6o6N9wc03pq26OulcXC5rKuUeNTnmA7mX04wOC+a2 12| jBe64W3aEGDCqk+ulw5hv8zsBAuD4vYsuRYkTCVtOgUCAwEAATANBgkqhkiG9w0BAQsFAAOCAQEA 13| V+Mp98LuveJp4xFsC+6kv0f6w9HXDb/2KbUWiqxsocuJ9E+YEJv3tNC7F9uivvgGNah3hJENlin0 ``` -------------------------------- ### Rotate SCIM Directory Bearer Token SDK and HTTP Examples Source: https://ssoready.com/docs/api-reference/management/scim-directories/rotate-scim-directory-bearer-token Examples demonstrating how to rotate a SCIM directory bearer token using the SSOReady SDK or direct HTTP requests. ```python import requests url = "https://api.ssoready.com/v1/scim-directories/id/rotate-bearer-token" headers = {"Authorization": "Bearer "} response = requests.post(url, headers=headers) print(response.json()) ``` ```typescript import { SSOReadyClient } from "ssoready"; const ssoReady = new SSOReadyClient({ apiKey: "YOUR_API_KEY" }); await ssoReady.management.scimDirectories.rotateScimDirectoryBearerToken("id"); ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.ssoready.com/v1/scim-directories/id/rotate-bearer-token" req, _ := http.NewRequest("POST", url, nil) req.Header.Add("Authorization", "Bearer ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.ssoready.com/v1/scim-directories/id/rotate-bearer-token") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Post.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.post("https://api.ssoready.com/v1/scim-directories/id/rotate-bearer-token") .header("Authorization", "Bearer ") .asString(); ``` ```php request('POST', 'https://api.ssoready.com/v1/scim-directories/id/rotate-bearer-token', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.ssoready.com/v1/scim-directories/id/rotate-bearer-token"); var request = new RestRequest(Method.POST); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://api.ssoready.com/v1/scim-directories/id/rotate-bearer-token")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "POST" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` -------------------------------- ### Filter Users by Group ID SDK Examples Source: https://ssoready.com/docs/api-reference/scim/list-scim-users Implementation examples for filtering SCIM users by group ID across multiple programming languages. ```python import requests url = "https://api.ssoready.com/v1/scim/users" querystring = {"organizationExternalId":"my_custom_external_id","scimGroupId":"scim_group_..."} headers = {"Authorization": "Bearer "} response = requests.get(url, headers=headers, params=querystring) print(response.json()) ``` ```typescript import { SSOReadyClient } from "ssoready"; const ssoReady = new SSOReadyClient({ apiKey: "YOUR_API_KEY" }); await ssoReady.scim.listScimUsers({ organizationExternalId: "my_custom_external_id" }); ``` ```go package main import ( "fmt" "net/http" "io" ) func main() { url := "https://api.ssoready.com/v1/scim/users?organizationExternalId=my_custom_external_id&scimGroupId=scim_group_..." req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Bearer ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby require 'uri' require 'net/http' url = URI("https://api.ssoready.com/v1/scim/users?organizationExternalId=my_custom_external_id&scimGroupId=scim_group_...") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://api.ssoready.com/v1/scim/users?organizationExternalId=my_custom_external_id&scimGroupId=scim_group_...") .header("Authorization", "Bearer ") .asString(); ``` ```php request('GET', 'https://api.ssoready.com/v1/scim/users?organizationExternalId=my_custom_external_id&scimGroupId=scim_group_...', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp using RestSharp; var client = new RestClient("https://api.ssoready.com/v1/scim/users?organizationExternalId=my_custom_external_id&scimGroupId=scim_group_..."); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://api.ssoready.com/v1/scim/users?organizationExternalId=my_custom_external_id&scimGroupId=scim_group_...")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ``` -------------------------------- ### SAML NameID Canonicalization Vulnerability Examples Source: https://ssoready.com/docs/saml/saml-technical-primer These examples demonstrate how XML comments can be used to manipulate NameID values while maintaining the same canonicalized signature. ```xml 1| ---|--- 2| abraham.lincoln@whitehouse.gov.evilcorp.com 3| ``` ```xml 1| ---|--- 2| abraham.lincoln@whitehouse.gov.evilcorp.com 3| ``` -------------------------------- ### Extracting SAML Assertion with Namespaces Source: https://ssoready.com/docs/saml/saml-technical-primer Example of a SAML response structure showing the assertion nested within the protocol response. ```xml 1| ---|--- 2| 3| 4| 5| ``` ```xml 1| ---|--- 2| 3| ``` -------------------------------- ### SAML InclusiveNamespaces Transform Configuration Source: https://ssoready.com/docs/saml/saml-technical-primer Example of the ds:Transform element used in SAML to specify the InclusiveNamespaces PrefixList for canonicalization. ```xml 1| ---|--- 2| 3| ``` -------------------------------- ### SAML Assertion Validity Window Source: https://ssoready.com/docs/saml/saml-technical-primer Example of a Conditions element defining the NotBefore and NotOnOrAfter timestamps for assertion validity. ```xml 1| ---|--- 2| 3| 4| https://auth.ssoready.com/v1/saml/saml_conn_bttep2j98bp0a30kas2462aek 5| 6| 7| ``` -------------------------------- ### Verify SAML Assertion ID Source: https://ssoready.com/docs/saml/saml-technical-primer Example of the Assertion ID attribute used to ensure uniqueness and prevent replay attacks. ```xml 1| ---|--- 2| ... 3| ``` -------------------------------- ### Vulnerable SAML Payload Processing Source: https://ssoready.com/docs/saml/saml-technical-primer An example of insecure code that processes the raw SAML payload instead of the canonicalized and validated version. ```python 1| saml_payload = # ... input from the ACS URL ---|--- 2| validated_payload = canonicalize_and_validate(saml_payload) 3| 4| # watch out! you should work with validated_payload, not saml_payload 5| email = saml_payload["NameID"].children[0].text ``` -------------------------------- ### POST /v1/setup-urls Source: https://ssoready.com/docs/api-reference/management/setup-urls/create-setup-url Creates a short-lived self-serve setup URL that you can send to your customer to configure their SAML or SCIM settings. ```APIDOC ## POST /v1/setup-urls ### Description Creates a short-lived self-serve setup URL that you can send to your customer. Setup URLs let your customer configure their SAML settings, SCIM settings, or both. ### Method POST ### Endpoint https://api.ssoready.com/v1/setup-urls ### Parameters #### Request Body - **organizationId** (string) - Optional - The organization that the setup URL is for. - **canManageSaml** (boolean) - Optional - Whether the setup URL lets the user manage SAML connections. - **canManageScim** (boolean) - Optional - Whether the setup URL lets the user manage SCIM directories. ### Response #### Success Response (200) - **url** (string) - The one-time, short-lived self-serve setup URL. #### Response Example { "url": "url" } ```