mirror of
https://github.com/matrix-org/matrix-spec
synced 2026-02-14 18:13:47 +01:00
Merge 7bf08cfef6 into 2a3841347e
This commit is contained in:
commit
e99eb910c6
1
changelogs/client_server/newsfragments/2270.feature
Normal file
1
changelogs/client_server/newsfragments/2270.feature
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
Add the account management capabilities for the OAuth 2.0 authentication API, as per [MSC4191](https://github.com/matrix-org/matrix-spec-proposals/pull/4191).
|
||||||
|
|
@ -645,7 +645,7 @@ manage their account like [changing their password](#password-management),
|
||||||
[deactivating their account](#account-deactivation).
|
[deactivating their account](#account-deactivation).
|
||||||
|
|
||||||
With the OAuth 2.0 API, all account management is done via the homeserver's web
|
With the OAuth 2.0 API, all account management is done via the homeserver's web
|
||||||
UI.
|
UI that can be accessed by users via the [account management URL](#oauth-20-account-management).
|
||||||
|
|
||||||
### Legacy API
|
### Legacy API
|
||||||
|
|
||||||
|
|
@ -2271,6 +2271,46 @@ The server SHOULD return one of the following responses:
|
||||||
- For other errors, the server returns a `400 Bad Request` response with error
|
- For other errors, the server returns a `400 Bad Request` response with error
|
||||||
details
|
details
|
||||||
|
|
||||||
|
#### Account management {id="oauth-20-account-management"}
|
||||||
|
|
||||||
|
{{% added-in v="1.18" %}}
|
||||||
|
|
||||||
|
All account management is done via the homeserver's web UI.
|
||||||
|
|
||||||
|
This specification defines extensions to the [OAuth Authorization Server
|
||||||
|
Metadata registry](https://www.iana.org/assignments/oauth-parameters/oauth-parameters.xhtml#authorization-server-metadata)
|
||||||
|
to offer clients a way to deep-link to the account management capabilities of
|
||||||
|
the homeserver to allow the user to complete the account management operations
|
||||||
|
in a browser.
|
||||||
|
|
||||||
|
##### Account management URL discovery
|
||||||
|
|
||||||
|
The [OAuth 2.0 authorization server metadata](#server-metadata-discovery) is
|
||||||
|
extended to include the following **optional** fields.
|
||||||
|
|
||||||
|
{{% definition path="schemas/oauth2-account-management-server-metadata" %}}
|
||||||
|
|
||||||
|
##### Account management URL parameters
|
||||||
|
|
||||||
|
The account management URL MAY accept the following minimum query parameters.
|
||||||
|
|
||||||
|
{{% definition path="schemas/oauth2-account-management-url" %}}
|
||||||
|
|
||||||
|
##### Account management URL actions
|
||||||
|
|
||||||
|
Account management actions are unique to the application. They SHOULD follow the
|
||||||
|
[Common Namespaced Identifier Grammar](/appendices/#common-namespaced-identifier-grammar)
|
||||||
|
where feasible. The Matrix-specific actions are:
|
||||||
|
|
||||||
|
| Action | Description |
|
||||||
|
|----------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------|
|
||||||
|
| `org.matrix.profile` | The user wishes to view/edit their profile (name, avatar, contact details). |
|
||||||
|
| `org.matrix.devices_list` | The user wishes to view a list of their devices. |
|
||||||
|
| `org.matrix.device_view` | The user wishes to view the details of a specific device. A `device_id` SHOULD be provided. |
|
||||||
|
| `org.matrix.device_delete` | The user wishes to delete/log out a specific device. A `device_id` SHOULD be provided. |
|
||||||
|
| `org.matrix.account_deactivate` | The user wishes to deactivate their account. |
|
||||||
|
| `org.matrix.cross_signing_reset` | The user wishes to reset their cross-signing identity. Servers SHOULD use this action in the URL of the [`m.oauth`](#oauth-authentication) UIA type. |
|
||||||
|
|
||||||
### Account moderation
|
### Account moderation
|
||||||
|
|
||||||
#### Account locking
|
#### Account locking
|
||||||
|
|
|
||||||
|
|
@ -139,6 +139,32 @@ paths:
|
||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
description: A prompt value that the server supports.
|
description: A prompt value that the server supports.
|
||||||
|
account_management_uri:
|
||||||
|
x-addedInMatrixVersion: "1.18"
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
description: |-
|
||||||
|
The URL where the user is able to access the account management capabilities
|
||||||
|
of the homeserver.
|
||||||
|
|
||||||
|
This is an extension [defined in this specification](/client-server-api/#oauth-20-account-management).
|
||||||
|
account_management_actions_supported:
|
||||||
|
x-addedInMatrixVersion: "1.18"
|
||||||
|
type: array
|
||||||
|
description: |-
|
||||||
|
List of actions that the account management URL supports.
|
||||||
|
|
||||||
|
This is an extension [defined in this specification](/client-server-api/#oauth-20-account-management).
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- "org.matrix.profile"
|
||||||
|
- "org.matrix.devices_list"
|
||||||
|
- "org.matrix.device_view"
|
||||||
|
- "org.matrix.device_delete"
|
||||||
|
- "org.matrix.account_deactivate"
|
||||||
|
- "org.matrix.cross_signing_reset"
|
||||||
|
description: An action that the account management URL supports.
|
||||||
required:
|
required:
|
||||||
- issuer
|
- issuer
|
||||||
- authorization_endpoint
|
- authorization_endpoint
|
||||||
|
|
@ -159,6 +185,15 @@ paths:
|
||||||
"grant_types_supported": ["authorization_code", "refresh_token"],
|
"grant_types_supported": ["authorization_code", "refresh_token"],
|
||||||
"response_modes_supported": ["query", "fragment"],
|
"response_modes_supported": ["query", "fragment"],
|
||||||
"code_challenge_methods_supported": ["S256"],
|
"code_challenge_methods_supported": ["S256"],
|
||||||
|
"account_management_uri": "https://account.example.com/manage",
|
||||||
|
"account_management_actions_supported": [
|
||||||
|
"org.matrix.profile",
|
||||||
|
"org.matrix.devices_list",
|
||||||
|
"org.matrix.device_view",
|
||||||
|
"org.matrix.device_delete",
|
||||||
|
"org.matrix.account_deactivate",
|
||||||
|
"org.matrix.cross_signing_reset",
|
||||||
|
],
|
||||||
}
|
}
|
||||||
tags:
|
tags:
|
||||||
- Session management
|
- Session management
|
||||||
|
|
|
||||||
22
data/schemas/oauth2-account-management-action.yaml
Normal file
22
data/schemas/oauth2-account-management-action.yaml
Normal file
|
|
@ -0,0 +1,22 @@
|
||||||
|
# Copyright 2026 The Matrix.org Foundation C.I.C.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- "org.matrix.profile"
|
||||||
|
- "org.matrix.devices_list"
|
||||||
|
- "org.matrix.device_view"
|
||||||
|
- "org.matrix.device_delete"
|
||||||
|
- "org.matrix.account_deactivate"
|
||||||
|
- "org.matrix.cross_signing_reset"
|
||||||
|
description: An action that the account management URL supports.
|
||||||
29
data/schemas/oauth2-account-management-server-metadata.yaml
Normal file
29
data/schemas/oauth2-account-management-server-metadata.yaml
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
# Copyright 2026 The Matrix.org Foundation C.I.C.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
type: object
|
||||||
|
title: OAuth 2.0 Server Metadata Account Management Extension
|
||||||
|
properties:
|
||||||
|
account_management_uri:
|
||||||
|
type: string
|
||||||
|
format: uri
|
||||||
|
description: |-
|
||||||
|
The URL where the user is able to access the account management capabilities of the
|
||||||
|
homeserver.
|
||||||
|
account_management_actions_supported:
|
||||||
|
type: array
|
||||||
|
description: |-
|
||||||
|
List of [actions](/client-server-api/#account-management-url-actions) that the account
|
||||||
|
management URL supports.
|
||||||
|
items:
|
||||||
|
$ref: ./oauth2-account-management-action.yaml
|
||||||
29
data/schemas/oauth2-account-management-url.yaml
Normal file
29
data/schemas/oauth2-account-management-url.yaml
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
# Copyright 2026 The Matrix.org Foundation C.I.C.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
# you may not use this file except in compliance with the License.
|
||||||
|
# You may obtain a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
# See the License for the specific language governing permissions and
|
||||||
|
# limitations under the License.
|
||||||
|
type: object
|
||||||
|
title: OAuth 2.0 Account Management URL Query Parameters
|
||||||
|
properties:
|
||||||
|
action:
|
||||||
|
$ref: ./oauth2-account-management-action.yaml
|
||||||
|
description: |-
|
||||||
|
The action that the user wishes to take. Must match one of the actions advertised by the
|
||||||
|
server in [`account_management_actions_supported`](/client-server-api/#account-management-url-discovery).
|
||||||
|
device_id:
|
||||||
|
type: string
|
||||||
|
description: |-
|
||||||
|
For Matrix-specific actions, the user's device ID. Actions which don't support the device ID
|
||||||
|
will ignore it.
|
||||||
|
|
||||||
|
If the `org.matrix.device_view` or `org.matrix.device_delete` actions are advertised as
|
||||||
|
supported by the server then the server SHOULD support the `device_id` parameter.
|
||||||
Loading…
Reference in a new issue