Whatever message this page gives is out now! Go check it out!
http://localhost:5100, where 5100 is the port number. mycontextroot , and the application is hosted on http://localhost:5100, you can access the application at http://localhost:5100/mycontextroot.Field | Description |
Name | The name identifies the user store. |
Logon Identifier | The unique identifier for a user store. Prefix this identifier when you log in to a portal. |
Description | The information about the user store. |
Disabled check-box | Select to enable users in the store access consumer applications. |
Field | Description |
Database Server Name | The name of the host from where the database runs. |
Database Port | The port number of the database server. |
Database User Name | The name of the user that has permission to a table. |
Database User Password | The password of the user. |
Database Name | The name of the database server that contains the table. |
JDBC Driver | The name of the class of the JDBC driver. |
JDBC Connection URL | The URL of the JDBC driver. For more information, refer to the JDBC Driver documentation. |
Datasource Path | The path to the source of JDBC data. For example, jdbc/SampleDataSource. |
Initial JNDI Properties | The list of JNDI standard environment properties. |
| Field | Description |
| User Table | The name of the table that contains the user accounts. |
| Key Column | The value of the column that uniquely identifies the rows in the table. |
| User First Name Column | The first name of the user. |
| User Last Name Column | The last name of the user. |
| User Email Column | The email of the user. |
| Password Column | The name of the column in the table that holds the values of the passwords of a user. |
| Roles Table | The name of the table in the database that contain user roles. |
| Roles Table Key Column | The name of the table that contains the mapping between users and their roles. |
| User Roles Mapping Table User Key Column | The value of the column that associates user account in the table. |
| User Roles Mapping Table Role Key Column | The value of the column that associates roles of users in the table. |
Field | Description |
Maximum Idle Connections | The maximum number of connections to the database that can be idle. |
Minimum Idle Connections | The minimum number of connections to the database that can be idle. |
Connection Wait Timeout | The time (in milliseconds) that the pool can wait for a connection before it times out. |
Maximum Active Connections | The maximum number of connections that are allocated from the pool concurrently. |
Idle Connection Evict Timeout | The time (in milliseconds) to wait before removing an idle connection. |
Field | Description |
Enable writing empty string | Select this check-box to write an empty string instead of a null value in columns defined as not-null in the table schema. |
Name Quoting | Select this check-box if you want the column names for the database to be within quotes. |
Validate Connection Query | The SQL query to validate the database connection. |
| Field | Description |
Name | The name of the user store. |
Logon Identifier | The identifier to the user store. |
Description | More information about the user store. |
Disabled | If disabled, users are unable to access applications. |
var http = require("http"); // USe HTTP as client
var pool = http.configure().pool({
"total" : 30,
"perRoute": 20
}).proxy("localhost:8080").timeout({
"readtimeout": 20,
"requesttimeout": 100
}).ssl({
"truststorename": "namegiveninadmin",
"keystore": "admin"
}).build();
var url = "Your URL";
var apiKey = "Your API key";function auth(username, password) {
r authMap = {
"username": username,
"password": password,
"options": {
"multiOptionalFactorEnroll": false,
"warnBeforePasswordExpired": false
}
};
print("response: " + JSON.stringify(authMap));
var response = pool.post(url + "authn")
.header("accept","application/json")
.header("Content-Type","application/json")
.body(JSON.stringify(authMap)).asString();
if(response.status == 401)
throw new Error("Invalid Username/Password");
if(response.status == 200) { //parse Response
print("received response " + response.body);
var json = JSON.parse(response.body);
if(json.status == "SUCCESS") {//save profile
return true;
}
throw new Error("Unknown Error");
} else
throw new Error("Internal Server Error");
}function searchUsers(settings) {
print("inside search users");
var response = pool.get(url + "users")
.header("accept","application/json")
.header("Content-Type","application/json")
.header("Authorization","SSWS " + apiKey)
.queryString("q",settings.filter)
.queryString("limit", settings.pageSize)
.asString();
print("received response " + response);
if(response.status == 200){
var json = JSON.parse(response.body);
if(json.length) {
var users = [];
for each (var user in json) {
users.push(toAccount(user));
}
return users;
}
return [];
} else if(response.status == 401) {
log.info("Okta API Key " + apiKey + " is invalid/expired. Unable to search for the users");
}
throw new Error("Internal server error.");
}function searchRoles(settings) {
print("inside search groups");
var response = pool.get(url + "groups")
.header("accept","application/json")
.header("Content-Type","application/json")
.header("Authorization","SSWS " + apiKey)
.queryString("q",settings.filter)
.queryString("limit", settings.pageSize)
.asString();
print("received response " + response);
if(response.status == 200){
var json = JSON.parse(response.body);
if(json.length) {
var groups = [];
for each (var group in json) {
groups.push(toGroup(group));
}
return groups;
}
return [];
} else if(response.status == 401) {
log.info("Okta API Key " + apiKey + " is invalid/expired. Unable to search for the groups");
}
throw new Error("Internal server error.");
}function getUser(username, needgroups) { // needgroups=True or false
print("inside get user");
var response = pool.get(url + "users/" + username)
.header("accept","application/json")
.header("Content-Type","application/json")
.header("Authorization","SSWS " + apiKey)
.asString();
print("received response " + response);
if(response.status == 200) {
print(response.body);
var acc = toAccount(JSON.parse(response.body));
if(needgroups) {
var groups = getUserRoles(username);
acc.userRoles = groups; // userRoles- list of unique ids of roles.
}
return acc;
} else if(response.status == 401) {
log.info("Okta API Key " + apiKey + " is invalid/expired. Unable to search for the users");
} else if(response.status == 404) {
return null;
}
throw new Error("Internal server error.");
}function getUserRoles(username) {
print("inside get user roles");
var response = pool.get(url + "users/" + username + "/groups")
.header("accept","application/json")
.header("Content-Type","application/json")
.header("Authorization","SSWS " + apiKey)
.asString();
if(response.status == 200){
var json = JSON.parse(response.body);
if(json.length) {
var groups = [];
for each (var group in json) {
groups.push(toGroup(group));
}
return groups;
}
return [];
} else if(response.status == 401) {
log.info("Okta API Key " + apiKey + " is invalid/expired. Unable to search for the groups");
}
throw new Error("Internal server error.");
}function getRoleMembers(rolename) {
print("inside get role members");
var response = pool.get(url + "groups/" + rolename + "/users")
.header("accept","application/json")
.header("Content-Type","application/json")
.header("Authorization","SSWS " + apiKey)
.asString();
if(response.status == 200){
var json = JSON.parse(response.body);
if(json.length) {
var users = [];
for each (var user in json) {
users.push(toAccount(user));
}
return users;
}
return [];
} else if(response.status == 401) {
log.info("Okta API Key " + apiKey + " is invalid/expired. Unable to search for the users of group");
}
throw new Error("Internal server error.");
}function onstoreend(){
pool.shutdown();
}Field | Description |
Name | The name of the user store. The name identifies this user store. |
Logon Identifier | The identifier of the user store in LDAP. |
Description | The information about this user store. |
Disabled | Select this check-box to enable users in the store access the consumer applications. |
Field | Description |
Host | The name or IP address of the LDAP server. |
TCP Port | The port number of the LDAP server. This port is the same as the port on which the LDAP listens for SSL connections. |
User Bind DN | The bind Distinguished Name (DN) to connect to the LDAP server. The bind DN is the user on the external LDAP server permitted to search the LDAP directory within the defined search base. The role of the bind DN is to query the directory using the LDAP query filter and search for a user. For example, some possible bind DNs are cn=administrator, cn=Users, dc=domain, or c=com. |
User Bind DN Password | The password to connect to the LDAP server. |
SSL/TLS Enabled | Select this check-box to use a secure connection. |
StartTLS Enabled | Select this check-box to allow an application to send secure requests to an LDAP server. |
Base Contexts | The points in the LDAP tree for searching the tree. |
Failover Servers | The name of all the servers that act as failover servers. For example, " ldap://ldap.example.com:389/" represents a list of failover servers. If the primary server fails, Java Naming and Directory Interface (JNDI) connects to the next available server in the list. |
| Field | Description |
| User Configuration | The object classes for creating user objects in LDAP. An object class represents the type of data in an LDAP. An objects class contains attributes of an entry in an LDAP. An objectclass is defined in a schema. |
| LDAP Filter for Retrieving Accounts | The filter attribute to retrieve user accounts from LDAP. |
| Account User Name Attributes | The attribute or attributes that represent a user name of an account. An attribute authenticates a user name in an LDAP entry. |
| User First Name Attribute | The attribute that represents the first name of the user in an LDAP account. |
| User Last Name Attribute | The attribute that represents the last name of the user in an LDAP account. |
| User Email Attribute | The attribute that represents the email of the user in an LDAP account. |
| Group Configuration | The object classes for creating groups in LDAP. |
| LDAP Filter for Retrieving Groups | The filter attribute to retrieve user groups from LDAP. |
| Group Name Attribute | The attribute that represents the name of the group in an LDAP account. |
| Group Membership Attribute | The attribute that contains users in an LDAP group. |
Field | Description |
Use Paged Result Control | Select this check-box to ensure that the LDAP uses paged results instead of Virtual List View (VLV) when retrieving user accounts. VLV lets you query a large directory in chunks. For example, let there be a directory with a large number of users, "ou": dc=demo,dc=local + ou=DemoGroups (100,000 groups) + ou=DemoUsers (100,000 users) If you want to present the information in the user group "ou" in a scrollable or paged window in an application, retrieving 1000 pages of 100 results each is an inefficient way. This method is resource-intensive and wastes bandwidth. On the other hand, VLV queries a large data-set with a sorting rule. For example, using VLV, you can sort the first 50 users ordered by organizationName in an LDAP. |
LDAP Referral Handling | Either follow or ignore LDAP referrals. LDAP referrals enable an LDAP tree to be distributed across multiple LDAP servers. Therefore, an LDAP server can reference other LDAP servers even though it does not store the full Directory Information Tree (DIT). When you browse a particular directory, an LDAP server returns referrals after referring you to another server in the tree. |
Name | Name of the SAML identity provider. |
Display Name | The name of the IdP to be displayed. |
Enabled | Enable or disable the IDP. |
Description | The description of the IDP. |
Service Provider | Select the SP already created. |
SAML URL | The URL through which you get the metadata. |
SSO URL | The URL through which you log in. |
Sign Authentication Assertions | Enable if you want to sign before sending the assertions. |
Sign Certificate | The certificate used for signing. |
Default Roles | Choose from the following – Publisher, Subscriber, or Administrator |
Role Attribute Name | Role identifier between API Manager and the IDP. |
Role Attribute Delimiter | Delimiter for role attributes. |
Attribute Mappings | Enter the same values that you had entered when configuring the application in Okta. |
User ID Location | Identifier for the user name defined in the metadata. |
Clock Skew (seconds) | Offset between the API Manager and the IDP local times. |
Name | The name of the service provider. |
Display Name | The name to be displayed. |
Enabled | Enable or disable the service provider. |
Description | The description of the service provider. |
Entity Id | Globally unique name for the SAML entity, which in this case is the Service Provider. |
SSO URL | The location where your Identity Provider receives SSO messages. |
ACS URL | The location where the SAML assertion is sent. |
Sign Requests | |
Assertions Signed | |
Enable IDP SSO | Enable the check-box to allow the Identity Provider's single-sign on service to receive a signed auth request. |
Signing Keystore name | |
Encryption Keystore name | |
To create a key store: | To import a key store: |
1. Click Create Key Store. 2. Set a name and password for the key store. 3. Click Create. 4. Click Import Certificate. 5. Enter the alias for the certificate and choose the certificate file that you had created using keytool command line or GUI. 6. Click Import Certificate. | 1. Click Import Key Store. 2. Enter the following details: a. Name of the key store b. Password of the key store c. Choose the certificate you had created previously d. Choose the type of key store – JKS or PKCS e. (Optional) Enter an alias for the certificate 3. Click Create. |
1 | Pie-chart for the number of API requests by publishers. |
2 | The number of API requests by a publisher. |
3 | The number of API requests. |
4 | The number of APIs. |
5 | The number of nodes in a cluster that contains the APIs. |
6 | The number of publishers. |
1 | Pie-chart for the number of API requests by publishers. |
2 | The number of nodes in a cluster that contains the APIs. |
3 | The number of API requests. |
4 | The unique count of publishers that have made at least one request within the time range. |
5 | The number of API requests from all publishers. |
6 | The number of API requests by publishers according to time-range. |