Updating authorization_services for new admin console (#1572)

Closes #1570
This commit is contained in:
andymunro 2022-07-25 16:36:51 -04:00 committed by GitHub
parent a4d4e54a39
commit 89cc9960ac
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
55 changed files with 168 additions and 27 deletions

View file

@ -1 +0,0 @@
:imagesdir: {asciidoctorconfigdir}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 97 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 139 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 95 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 72 KiB

After

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

After

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

After

Width:  |  Height:  |  Size: 111 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 72 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 276 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 172 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 141 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 217 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 123 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 109 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

View file

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View file

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View file

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View file

@ -14,13 +14,24 @@ image:{project_images}/getting-started/hello-world/create-realm.png[alt="Realm h
+
The user list page displays where you can create a user.
ifeval::[{project_community}==true]
. Click *Create user*.
endif::[]
ifeval::[{project_product}==true]
. Click *Add User*.
endif::[]
. Complete the *Username*, *Email*, *First Name*, and *Last Name* fields.
. Toggle *User Enabled* to *ON*
. Toggle *User Enabled* to *ON*.
ifeval::[{project_community}==true]
. Click *Create*.
endif::[]
ifeval::[{project_product}==true]
. Click *Save*.
endif::[]
+
.Add User
image:{project_images}/getting-started/hello-world/create-user.png[alt="Add User"]
@ -30,6 +41,12 @@ image:{project_images}/getting-started/hello-world/create-user.png[alt="Add User
.Set user password
image:{project_images}/getting-started/hello-world/reset-user-pwd.png[alt="Set user password"]
. Complete the *New Password* and *Password Confirmation* fields with a password and click the *Temporary* switch to *OFF*.
. Complete the *New Password* and *Password Confirmation* fields and toggle *Temporary* to *OFF*.
ifeval::[{project_community}==true]
. Click *Save*.
. Click *Save password*.
endif::[]
ifeval::[{project_product}==true]
. Click *Set Password* to set the user's password.
endif::[]

View file

@ -5,20 +5,36 @@ You can enable authorization services in an existing client application configur
.Procedure
. Click *Clients* to start creating a client application.
. Click *Clients* in the menu.
ifeval::[{project_community}==true]
. Fill in the *Client type*.
endif::[]
ifeval::[{project_product}==true]
. Fill in the *Client ID*, *Client Protocol*, and *Root URL* fields.
endif::[]
ifeval::[{project_community}==true]
. Click *Next*.
. Toggle *Client authentication* to *ON*.
. Toggle *Authorization* to *ON*.
. Click *Save*.
. Scroll down to the *Capability config* section.
. Fill in the *Root URL* field.
. Click *Save*.
endif::[]
+
.Create client application
image:{project_images}/getting-started/hello-world/create-client.png[alt="Create client application"]
ifeval::[{project_product}==true]
. Click *Save*.
+
The Client Settings page is displayed.
. Select *confidential* in the *Access Type* field and toggle *Authorization Enabled* to *ON*
. Click *Save*.
endif::[]
+
A new *Authorization* tab is displayed for the client.
+

View file

@ -48,9 +48,14 @@ You must first obtain the adapter configuration before building and deploying th
.Client Settings
image:{project_images}/getting-started/hello-world/enable-authz.png[alt="Client Settings"]
ifeval::[{project_community}==true]
. From the *Action* list, select *Download adapter config*.
endif::[]
ifeval::[{project_product}==true]
. Click the *Installation* tab.
endif::[]
. From the Format Option item list, select *Keycloak OIDC JSON*.
. From the Format Option list, select *Keycloak OIDC JSON*.
+
The adapter configuration is displayed in JSON format.

View file

@ -3,7 +3,12 @@
A resource-based permission defines a set of one or more resources to protect using a set of one or more authorization policies.
ifeval::[{project_community}==true]
To create a new resource-based permission, select *Create resource-based permission* from the *Create permission* dropdown.
endif::[]
ifeval::[{project_product}==true]
To create a new resource-based permission, select *Resource-based* in the item list in the upper right corner of the permission listing.
endif::[]
.Add Resource Permission
image:{project_images}/permission/create-resource.png[alt="Add Resource Permission"]
@ -32,7 +37,12 @@ Defines the resource type to protect. When defined, this permission is evaluated
+
Defines a set of one or more resources to protect.
ifeval::[{project_community}==true]
* *Policy*
endif::[]
ifeval::[{project_product}==true]
* *Apply Policy*
endif::[]
+
Defines a set of one or more policies to associate with a permission. To associate a policy you can either select an existing policy
or create a new one by selecting the type of the policy you want to create.

View file

@ -3,7 +3,12 @@
A scope-based permission defines a set of one or more scopes to protect using a set of one or more authorization policies. Unlike resource-based permissions, you can use this permission type to create permissions not only for a resource, but also for the scopes associated with it, providing more granularity when defining the permissions that govern your resources and the actions that can be performed on them.
ifeval::[{project_community}==true]
To create a new scope-based permission, select *Create scope-based permission* from the *Create permission* dropdown.
endif::[]
ifeval::[{project_product}==true]
To create a new scope-based permission, select *Scope-based* in the item list in the upper right corner of the permission listing.
endif::[]
.Add Scope Permission
image:{project_images}/permission/create-scope.png[alt="Add Scope Permission"]
@ -27,7 +32,12 @@ Restricts the scopes to those associated with the selected resource. If none is
+
Defines a set of one or more scopes to protect.
ifeval::[{project_community}==true]
* *Policy*
endif::[]
ifeval::[{project_product}==true]
* *Apply Policy*
endif::[]
+
Defines a set of one or more policies to associate with a permission. To associate a policy you can either select an existing policy
or create a new one by selecting the type of the policy you want to create.

View file

@ -3,7 +3,12 @@
As mentioned previously, {project_name} allows you to build a policy of policies, a concept referred to as policy aggregation. You can use policy aggregation to reuse existing policies to build more complex ones and keep your permissions even more decoupled from the policies that are evaluated during the processing of authorization requests.
ifeval::[{project_community}==true]
To create a new aggregated policy, select *Aggregated* from the policy type list.
endif::[]
ifeval::[{project_product}==true]
To create a new aggregated policy, select *Aggregated* in the item list located in the right upper corner of the policy listing.
endif::[]
.Add an aggregated policy
image:{project_images}/policy/create-aggregated.png[alt="Add aggregated policy"]

View file

@ -3,10 +3,15 @@
You can use this type of policy to define conditions for your permissions where a set of one or more clients is permitted to access an object.
ifeval::[{project_community}==true]
To create a new client-based policy, select *Client* from the policy type list.
endif::[]
ifeval::[{project_product}==true]
To create a new client-based policy, select *Client* in the item list in the upper right corner of the policy listing.
endif::[]
.Add a Client Policy
image:images/policy/create-client.png[alt="Add a Client Policy"]
image:{project_images}/policy/create-client.png[alt="Add a Client Policy"]
== Configuration
@ -21,7 +26,7 @@ A string containing details about this policy.
+
* *Clients*
+
Specifies which clients are given access by this policy.
Specifies which clients have givenGroup-based policy access by this policy.
+
* *Logic*
+

View file

@ -4,7 +4,7 @@
When creating a client scope-based policy, you can specify a specific client scope as `Required`. When you do that, the policy will grant access only if the client requesting access has been granted *all* the *required* client scopes.
.Example of required client scope
image:images/policy/create-client-scope.png[alt="Example of required client scope"]
image:{project_images}/policy/create-client-scope.png[alt="Example of required client scope"]
To specify a client scope as required, select the `Required` checkbox for the client scope you want to configure as required.

View file

@ -5,10 +5,15 @@ You can use this type of policy to define conditions for your permissions where
By default, client scopes added to this policy are not specified as required and the policy will grant access if the client requesting access has been granted any of these client scopes. However, you can specify a specific client scope as <<_policy_client_scope_required, required>> if you want to enforce a specific client scope.
ifeval::[{project_community}==true]
To create a new client scope-based policy, select *Client Scope* from the policy type list.
endif::[]
ifeval::[{project_product}==true]
To create a new client scope-based policy, select *Client Scope* in the item list in the upper right corner of the policy listing.
endif::[]
.Add Client Scope Policy
image:images/policy/create-client-scope.png[alt="Add Client Scope Policy"]
image:{project_images}/policy/create-client-scope.png[alt="Add Client Scope Policy"]
== Configuration

View file

@ -3,7 +3,12 @@
You can use this type of policy to define conditions for your permissions where a set of one or more groups (and their hierarchies) is permitted to access an object.
ifeval::[{project_community}==true]
To create a new group-based policy, select *Group* from the policy type list.
endif::[]
ifeval::[{project_product}==true]
To create a new group-based policy, select *Group* in the item list in the upper right corner of the policy listing.
endif::[]
Group Policy
image:{project_images}/policy/create-group.png[alt="Add Group Policy"]

View file

@ -12,6 +12,12 @@ image:{project_images}/policy/view.png[alt="Policies"]
+
On this tab, you can view the list of previously created policies as well as create and edit a policy.
ifeval::[{project_community}==true]
. To create a new policy, click *Create policy*, then select a policy type from the list.
endif::[]
ifeval::[{project_product}==true]
. To create a new policy, select a policy type from the *Create policy* item list in the upper right corner.
endif::[]
+
Details about each policy type are described in this section.

View file

@ -3,10 +3,15 @@
You can use this type of policy to define regex conditions for your permissions.
ifeval::[{project_community}==true]
To create a new regex-based policy, select *Regex* from the policy type list.
endif::[]
ifeval::[{project_product}==true]
To create a new regex-based policy, select *Regex* in the item list in the upper right corner of the policy listing.
endif::[]
.Add Regex Policy
image:images/policy/create-regex.png[alt="Add Regex Policy"]
image:{project_images}/policy/create-regex.png[alt="Add Regex Policy"]
== Configuration

View file

@ -7,7 +7,12 @@ By default, roles added to this policy are not specified as required and the pol
Role policies can be useful when you need more restricted role-based access control (RBAC), where specific roles must be enforced to grant access to an object. For instance, you can enforce that a user must consent to allowing a client application (which is acting on the user's behalf) to access the user's resources. You can use {project_name} Client Scope Mapping to enable consent pages or even enforce clients to explicitly provide a scope when obtaining access tokens from a {project_name} server.
ifeval::[{project_community}==true]
To create a new role-based policy, select *Role* from the policy type list.
endif::[]
ifeval::[{project_product}==true]
To create a new role-based policy, select *Role* in the item list in the upper right corner of the policy listing.
endif::[]
.Add Role Policy
image:{project_images}/policy/create-role.png[alt="Add Role Policy"]

View file

@ -19,6 +19,15 @@ can identify them more easily.
+
A string containing details about this policy.
+
ifeval::[{project_community}==true]
* *Start time*
+
Defines the time before which access must *not* be granted. Permission is granted only if the current date/time is later than or equal to this value.
* *Expire time*
+
Defines the time after which access must *not* be granted. Permission is granted only if the current date/time is earlier than or equal to this value.
endif::[]
ifeval::[{project_product}==true]
* *Not Before*
+
Defines the time before which access must *not* be granted. Permission is granted only if the current date/time is later than or equal to this value.
@ -27,27 +36,27 @@ Defines the time before which access must *not* be granted. Permission is grante
* *Not On or After*
+
Defines the time after which access must *not* be granted. Permission is granted only if the current date/time is earlier than or equal to this value.
+
endif::[]
ifeval::[{project_community}==true]
Select *Repeat* to repeat access being granted on a specific *Day of Month*, *Month*, *Year*, *Hour* or *Minute*.
endif::[]
* *Day of Month*
+
Defines the day of month that access must be granted. You can also specify a range of dates. In this case, permission is granted only if the current day of the month is between or equal to the two values specified.
+
* *Month*
+
Defines the month that access must be granted. You can also specify a range of months. In this case, permission is granted only if the current month is between or equal to the two values specified.
+
* *Year*
+
Defines the year that access must be granted. You can also specify a range of years. In this case, permission is granted only if the current year is between or equal to the two values specified.
+
* *Hour*
+
Defines the hour that access must be granted. You can also specify a range of hours. In this case, permission is granted only if current hour is between or equal to the two values specified.
+
* *Minute*
+
Defines the minute that access must be granted. You can also specify a range of minutes. In this case, permission is granted only if the current minute is between or equal to the two values specified.
+
* *Logic*
+
The logic of this policy to apply after the other conditions have been evaluated.

View file

@ -4,7 +4,12 @@
Creating a resource is straightforward and generic. Your main concern is the granularity of the resources you create. In other words, resources can
be created to represent a set of one or more resources and the way you define them is crucial to managing permissions.
ifeval::[{project_community}==true]
To create a new resource, click *Create resource*.
endif::[]
ifeval::[{project_product}==true]
To create a new resource, click *Create* in the right upper corner of the resource listing.
endif::[]
.Add resource
image:{project_images}/resource/create.png[alt="Add resource"]

View file

@ -8,14 +8,24 @@ The first step to enable {project_name} Authorization Services is to create the
. Click *Clients*.
+
.Clients
image:{project_images}/resource-server/client-list.png[alt="Clients"]
image:{project_images}/resource-server/client-list.png[Clients]
ifeval::[{project_community}==true]
. On this page, click *Create client*.
endif::[]
ifeval::[{project_product}==true]
. On this page, click *Create*.
endif::[]
+
.Add Client
image:{project_images}/resource-server/client-create.png[alt="Add Client"]
image:{project_images}/resource-server/client-create.png[Add Client]
. Type the `Client ID` of the client. For example, _my-resource-server_.
ifeval::[{project_community}==true]
. Click *Next*.
. Toggle *Client authentication* to ON.
. Click *Save*.
endif::[]
. Type the `Root URL` for your application. For example:
+
```

View file

@ -1,10 +1,23 @@
[[_resource_server_enable_authorization]]
= Enabling authorization services
To turn your OIDC Client Application into a resource server and enable fine-grained authorization, select *Access type* *confidential* and click the *Authorization Enabled* switch to *ON* then click *Save*.
ifeval::[{project_community}==true]
You can turn your OIDC client into a resource server and enable fine-grained authorization.
.Procedure
. Toggle *Authorization Enabled* to *ON*.
. Click *Save*.
endif::[]
ifeval::[{project_product}==true]
You can now turn your OIDC client into a resource server and enable fine-grained authorization.
.Procedure
. Set *Access type* to *confidential*.
. Toggle *Authorization Enabled* to *ON*.
. Click *Save*.
endif::[]
+
.Enabling authorization services
image:{project_images}/resource-server/client-enable-authz.png[alt="Enabling authorization services"]
image:{project_images}/resource-server/client-enable-authz.png[Enabling authorization services]
A new Authorization tab is displayed for this client. Click the *Authorization* tab and a page similar to the following is displayed:

View file

@ -11,12 +11,18 @@ The configuration settings for a resource server (or client) can be exported and
.Procedure
. Navigate to the *Resource Server Settings* page.
. Click the *Export Settings* tab.
. On this page, click *Export*.
. Click *Clients* in the menu.
. Click the client you created as a resource server.
ifeval::[{project_community}==true]
. Click the *Export* tab.
endif::[]
ifeval::[{project_product}==true]
. Click *Clients* in the menu.
. Click the client you created as a resource server.
endif::[]
+
.Export Settings
image:{project_images}/resource-server/authz-export.png[alt="Export Settings"]
image:{project_images}/resource-server/authz-export.png[Export Settings]
The configuration file is exported in JSON format and displayed in a text area, from which you can copy and paste. You can also click *Download* to download the configuration file and save it.
@ -29,6 +35,11 @@ You can import a configuration file for a resource server.
. Navigate to the *Resource Server Settings* page.
+
.Import Settings
image:{project_images}/resource-server/authz-settings.png[alt="Import Settings"]
image:{project_images}/resource-server/authz-settings.png[Import Settings]
ifeval::[{project_community}==true]
. Click *Import* and choose a file containing the configuration that you want to import.
endif::[]
ifeval::[{project_product}==true]
. Click *Select file* and choose a file containing the configuration that you want to import.
endif::[]