Skip to content

Commit 617052b

Browse files
cloudjumpercatCopilotlena-larionova
authored andcommitted
feat(portal): Entra and Okta DCR rotation (#4752)
* Add FAQ to DCR how tos for Okta and Entra, make the managing credentials section apply to three IdPs Signed-off-by: Diana <75819066+cloudjumpercat@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> * apply remaining copilot feedback Signed-off-by: Diana <75819066+cloudjumpercat@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com> --------- Signed-off-by: Diana <75819066+cloudjumpercat@users.noreply.github.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: lena-larionova <54370747+lena-larionova@users.noreply.github.com>
1 parent 99597c4 commit 617052b

3 files changed

Lines changed: 47 additions & 38 deletions

File tree

app/_how-tos/dev-portal/azure-ad-dcr.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ tldr:
2929
q: How do I automatically create and manage Dev Portal applications in Azure AD?
3030
a: |
3131
You can use Dynamic Client Registration to automatically create Dev Portal applications in Azure AD. First, create an application in Azure and configure the `Application.ReadWrite.OwnedBy` and `User.Read` API permissions, select **Accounts in this organizational directory only** for the supported account types, and create a client secret. Then, create a new DCR provider in your Dev Portal settings and create a new auth strategy for DCR.
32-
32+
faqs:
33+
- q: Can developers rotate their Entra DCR credentials?
34+
a: Yes, developers can create multiple Entra DCR credentials and revoke old ones as needed. See [Managing credentials](/dev-portal/dynamic-client-registration/#managing-credentials) for more information.
3335
prereqs:
3436
skip_product: true
3537
inline:

app/_how-tos/dev-portal/okta-dcr.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,9 @@ tldr:
2828
q: How do I automatically create and manage Dev Portal applications in Okta?
2929
a: |
3030
You can use Dynamic Client Registration to automatically create Dev Portal applications in Okta. First, create scopes and claims in Okta and copy your Issuer URL. Then, create a new DCR provider in your Dev Portal settings and create a new auth strategy for DCR.
31-
31+
faqs:
32+
- q: Can developers rotate their Okta DCR credentials?
33+
a: Yes, developers can create multiple Okta DCR credentials and revoke old ones as needed. See [Managing credentials](/dev-portal/dynamic-client-registration/#managing-credentials) for more information.
3234
prereqs:
3335
skip_product: true
3436
inline:

app/dev-portal/dynamic-client-registration.md

Lines changed: 41 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
---
2-
title: Dev Portal Dynamic Client Registration
2+
title: "{{site.dev_portal}} Dynamic Client Registration"
33
content_type: reference
44
layout: reference
55

66
products:
7-
- dev-portal
7+
- dev-portal
88

99
breadcrumbs:
1010
- /dev-portal/
@@ -29,39 +29,39 @@ related_resources:
2929
- text: Configure Dynamic Client Registration with Auth0
3030
url: /how-to/auth0-dcr/
3131
- text: Configure Dynamic Client Registration with Azure
32-
url: /how-to/azure-dcr/
32+
url: /how-to/azure-ad-dcr/
3333
- text: Configure Dynamic Client Registration with Kong Identity
3434
url: /how-to/kong-identity-dcr/
3535
- text: About OIDC Dynamic Client Registration
3636
url: https://openid.net/specs/openid-connect-registration-1_0.html
37-
- text: About Dev Portal OIDC authentication
37+
- text: About {{site.dev_portal}} OIDC authentication
3838
url: /dev-portal/auth-strategies/#dev-portal-oidc-authentication
3939
- text: Application authentication strategies
4040
url: /dev-portal/auth-strategies/
41-
- text: Dev Portal developer sign-up
41+
- text: "{{site.dev_portal}} developer sign-up"
4242
url: /dev-portal/developer-signup/
4343
- text: Link static clients with self-managed OIDC
4444
url: /dev-portal/auth-strategies/#link-static-clients-with-self-managed-oidc
4545
faqs:
4646
- q: What should I do if my IdP is not natively supported for the DCR flow?
4747
a: "{{site.konnect_short_name}} supports a custom HTTP DCR bridge that you can use with any third-party IdP that isn't natively supported."
48-
- q: What connections and protocols are involved between Dev Portal and our organization when DCR is enabled?
48+
- q: What connections and protocols are involved between {{site.dev_portal}} and our organization when DCR is enabled?
4949
a: "{{site.konnect_short_name}} will make HTTP requests to the IdP for DCR. The details of the request are IdP-specific."
5050
- q: What connections and protocols are involved when a custom HTTP DCR bridge is configured for a custom IdP?
5151
a: Kong uses HTTPS to transmit events to the domain you've provided and includes a key that can be used on your custom handler implementation to verify the events are from {{site.konnect_short_name}}.
5252
- q: Does revoking a credential immediately invalidate it, or can it still be used for some time after revocation?
5353
a: |
5454
By default, credentials are cached and can be used for a short time period even after they have been revoked.
55-
If you want credentials to be revoked immediately, edit the auth strategy that uses HTTP DCR bridge to set `cache_tokens` to `false`.
55+
If you want credentials to be revoked immediately, edit the auth strategy to set `cache_tokens` to `false` in the advanced configuration.
5656
---
57-
Dynamic Client Registration (DCR) in {{site.konnect_short_name}} Dev Portal allows an application in the Dev Portal to register as a client with an Identity Provider (IdP). This outsources the issuer and management of application credentials to a third party, as the IdP returns a client identifier and the registered client metadata. This enables OpenID Connect (OIDC) features that the IdP supports. Dev Portal DCR adheres to [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591).
57+
Dynamic Client Registration (DCR) in {{site.konnect_short_name}} {{site.dev_portal}} allows an application in the {{site.dev_portal}} to register as a client with an Identity Provider (IdP). This outsources the issuer and management of application credentials to a third party, as the IdP returns a client identifier and the registered client metadata. This enables OpenID Connect (OIDC) features that the IdP supports. {{site.dev_portal}} DCR adheres to [RFC 7591](https://datatracker.ietf.org/doc/html/rfc7591).
5858

59-
In Dev Portal, you can create and use multiple DCR configurations. You can configure DCR by doing the following:
59+
In {{site.dev_portal}}, you can create and use multiple DCR configurations. You can configure DCR by doing the following:
6060

6161
{% navtabs "configure-dcr" %}
6262
{% navtab "UI" %}
63-
1. In the {{site.konnect_short_name}} sidebar, click [**Dev Portal**](https://cloud.konghq.com/portals/).
64-
1. In the Dev Portal sidebar, click [**Application Auth**](https://cloud.konghq.com/portals/application-auth).
63+
1. In the {{site.konnect_short_name}} sidebar, click [**{{site.dev_portal}}**](https://cloud.konghq.com/portals/).
64+
1. In the {{site.dev_portal}} sidebar, click [**Application Auth**](https://cloud.konghq.com/portals/application-auth).
6565
1. Click the **DCR provider** tab.
6666
1. Click **New provider**.
6767
1. In the **Name** field, enter the name for your DCR provider.
@@ -138,21 +138,21 @@ body:
138138
{% endnavtab %}
139139
{% endnavtabs %}
140140

141-
## How does DCR work in Dev Portal?
141+
## How does DCR work in {{site.dev_portal}}?
142142

143-
After you publish an API that's linked to a Gateway Service with a DCR application authentication strategy applied, developers can register an application with your API in Dev Portal. Dev Portal registers that application as a client in the IdP through DCR and displays the returned credentials to the developer. Requests to your API succeed only when the client presents valid credentials and the application holds a registration for the linked Service.
143+
After you publish an API that's linked to a Gateway Service with a DCR application authentication strategy applied, developers can register an application with your API in {{site.dev_portal}}. {{site.dev_portal}} registers that application as a client in the IdP through DCR and displays the returned credentials to the developer. Requests to your API succeed only when the client presents valid credentials and the application holds a registration for the linked Service.
144144

145145
The following diagram shows how this DCR flow works:
146146

147147

148148
{% mermaid %}
149149
sequenceDiagram
150150
actor Developer
151-
Developer->> +Dev Portal: Creates an application
152-
Dev Portal->>+IdP: Creates an application
153-
IdP->>-Dev Portal: Returns client metadata, Client ID, and secrets
154-
Dev Portal->>Dev Portal: Saves application record in database with ONLY Client ID mapping
155-
Dev Portal->>-Developer: Returns application creation success with client ID and secret
151+
Developer->> +{{site.dev_portal}}: Creates an application
152+
{{site.dev_portal}}->>+IdP: Creates an application
153+
IdP->>-{{site.dev_portal}}: Returns client metadata, Client ID, and secrets
154+
{{site.dev_portal}}->>{{site.dev_portal}}: Saves application record in database with ONLY Client ID mapping
155+
{{site.dev_portal}}->>-Developer: Returns application creation success with client ID and secret
156156
{% endmermaid %}
157157

158158

@@ -215,7 +215,7 @@ After successfully authenticating using either client credentials or a bearer ac
215215

216216
## Configure a custom IdP for Dynamic Client Registration
217217

218-
If your third-party IdP isn't natively supported, you can still use your IdP with {{site.konnect_short_name}} by using a custom HTTP DCR bridge. This HTTP DCR bridge acts as a proxy and translation layer between your IdP and DCR applications in the Dev Portal. When a developer creates a DCR application in the Dev Portal, {{site.konnect_short_name}} calls your HTTP DCR bridge which can translate the application data into a suitable format for your third-party IdP, and add additional functionality such as making API calls to other systems as part of the DCR flow.
218+
If your third-party IdP isn't natively supported, you can still use your IdP with {{site.konnect_short_name}} by using a custom HTTP DCR bridge. This HTTP DCR bridge acts as a proxy and translation layer between your IdP and DCR applications in the {{site.dev_portal}}. When a developer creates a DCR application in the {{site.dev_portal}}, {{site.konnect_short_name}} calls your HTTP DCR bridge which can translate the application data into a suitable format for your third-party IdP, and add additional functionality such as making API calls to other systems as part of the DCR flow.
219219

220220
{% mermaid %}
221221
sequenceDiagram
@@ -231,31 +231,38 @@ sequenceDiagram
231231
Konnect Dev Portal->>Developer: Show credentials
232232
{% endmermaid %}
233233

234-
> _**Figure 1:** This diagram illustrates how an HTTP DCR bridge creates an application in an IdP when a developer submits an application in the {{site.konnect_short_name}} Dev Portal. First, the developer creates an application in the Dev Portal, which triggers the portal to send the application details to the HTTP DCR bridge. The bridge then sends a `POST create application` request to the IdP. If the IdP successfully processes the request, it returns a `200` status code along with the credentials for the developer’s application. These credentials are then displayed to the developer in the Dev Portal._
234+
> _**Figure 1:** This diagram illustrates how an HTTP DCR bridge creates an application in an IdP when a developer submits an application in the {{site.konnect_short_name}} {{site.dev_portal}}. First, the developer creates an application in the {{site.dev_portal}}, which triggers the portal to send the application details to the HTTP DCR bridge. The bridge then sends a `POST create application` request to the IdP. If the IdP successfully processes the request, it returns a `200` status code along with the credentials for the developer’s application. These credentials are then displayed to the developer in the {{site.dev_portal}}._
235235
236-
### Configure custom DCR using the {{site.konnect_short_name}} Dev Portal DCR Handler
236+
### Configure custom DCR using the {{site.konnect_short_name}} {{site.dev_portal}} DCR Handler
237237

238-
To use an unsupported IdP with DCR, you must implement an API that conforms to the [{{site.konnect_short_name}} Dev Portal DCR Handler spec](https://github.com/Kong/konnect-portal-dcr-handler/blob/main/openapi/openapi.yaml). Kong provides an example reference implementation in the [{{site.konnect_short_name}} Dev Portal DCR Handler repository](https://github.com/Kong/konnect-portal-dcr-handler). This is an example HTTP DCR bridge implementation and is not meant to be deployed in production. We encourage you to use this implementation as a guide to create your own implementation.
238+
To use an unsupported IdP with DCR, you must implement an API that conforms to the [{{site.konnect_short_name}} {{site.dev_portal}} DCR Handler spec](https://github.com/Kong/konnect-portal-dcr-handler/blob/main/openapi/openapi.yaml). Kong provides an example reference implementation in the [{{site.konnect_short_name}} {{site.dev_portal}} DCR Handler repository](https://github.com/Kong/konnect-portal-dcr-handler). This is an example HTTP DCR bridge implementation and is not meant to be deployed in production. We encourage you to use this implementation as a guide to create your own implementation.
239239

240-
Any request that does not return a `2xx` status code is considered a failure and will halt the application creation process in your {{site.konnect_short_name}} Dev Portal.
240+
Any request that does not return a `2xx` status code is considered a failure and will halt the application creation process in your {{site.konnect_short_name}} {{site.dev_portal}}.
241241

242-
### Managing credentials
243-
244-
Dev Portal developers can manage their application credentials through their applications page without needing a Dev Portal admin's assistance.
245-
Developers can maintain multiple active credentials, allowing them to assign different credentials to each service consuming their application and revoke credentials as needed. The number of active credentials supported per application is determined by the identity provider configured in the HTTP DCR bridge.
242+
## Managing credentials
246243

244+
{{site.dev_portal}} developers can manage their application credentials through their applications page without needing a {{site.dev_portal}} admin's assistance.
245+
Developers can maintain multiple active credentials, allowing them to assign different credentials to each service consuming their application and revoke credentials as needed.
246+
This is supported by the following IdPs:
247+
* [Entra](/how-to/azure-ad-dcr/)
248+
* [Okta](/how-to/okta-dcr/)
249+
* [Custom HTTP DCR bridge](#configure-a-custom-idp-for-dynamic-client-registration)
250+
247251
{:.warning}
248-
> Maintaining multiple credentials for one application is currently available only for HTTP DCR bridge.
252+
> **HTTP DCR bridge credential rotation:**
253+
> To make sure that their developers have access to the credential API endpoints, {{site.dev_portal}} admins must ensure that the HTTP DCR bridge supports credential rotation based on the provided API spec.
254+
> The number of active credentials supported per application is determined by the identity provider configured in the HTTP DCR bridge.
249255
250-
Dev Portal admins can view credential IDs by opening an application in {{site.konnect_short_name}} and checking its **Credentials** tab. Application credential values are not visible from {{site.konnect_short_name}}, and Dev Portal admins cannot add or revoke credentials directly from {{site.konnect_short_name}}.
251256

252-
Developers can view credential IDs by opening an application in their Dev Portal, and checking its **Credentials** tab. Application credentials values are not visible after creation. Developers can revoke credentials directly from the **Credentials** tab.
257+
{{site.dev_portal}} admins can view credential IDs by opening an application in {{site.konnect_short_name}} and checking its **Credentials** tab. Application credential values are not visible from {{site.konnect_short_name}}, and {{site.dev_portal}} admins cannot add or revoke credentials directly from {{site.konnect_short_name}}.
253258

254-
#### Rotate a credential
259+
Developers can view credential IDs by opening an application in their {{site.dev_portal}}, and checking its **Credentials** tab. Application credential values are not visible after creation. Developers can revoke credentials directly from the **Credentials** tab.
255260

256-
When developers need to replace a credential with a new one, they can rotate the credential manually through an application's configuration page in their Dev Portal:
261+
### Rotate a credential
257262

258-
1. In your Dev Portal, click your profile and select **My applications**.
263+
When developers need to replace a credential with a new one, they can rotate the credential manually through an application's configuration page in their {{site.dev_portal}}:
264+
265+
1. In your {{site.dev_portal}}, click your profile and select **My applications**.
259266
1. Open an application.
260267
1. Click the **Credentials** tab.
261268
1. Click **New Credential**.
@@ -269,6 +276,4 @@ When developers need to replace a credential with a new one, they can rotate the
269276
1. Enter `revoke`.
270277
1. Click **Revoke**.
271278

272-
Developers can also manage their application credentials using the [Portal API](/api/konnect/portal-management/v3/).
273-
274-
To make sure that their developers have access to the credential API endpoints, Dev Portal admins must ensure that the HTTP DCR bridge supports credential rotation based on the provided API spec.
279+
Developers can also manage their application credentials using the [Portal API](/api/konnect/portal-management/v3/).

0 commit comments

Comments
 (0)