Skip to content

Commit abc9532

Browse files
authored
Add basic documentation for personal sessions (#5187)
2 parents e37456b + 9edf149 commit abc9532

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

docs/topics/admin-api.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,9 @@ If admin API is enabled, MAS will also serve the specification at `/api/spec.jso
4646

4747
## Authentication
4848

49-
All requests to the admin API are gated using access tokens obtained using OAuth 2.0 grants.
49+
All requests to the admin API are gated either using access tokens obtained using OAuth 2.0 grants,
50+
or using personal access tokens (which must currently be issued through the Admin API).
51+
5052
They must have the [`urn:mas:admin`](../reference/scopes.md#urnmasadmin) scope.
5153

5254
### User-interactive tools

docs/topics/authorization.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,33 @@ It may also be used in the future as a foundation for a new Application Service
129129
This works by presenting the client credentials to get back an access token.
130130
The simplest type of client credentials is a client ID and client secret pair, but MAS also supports client authentication with a JWT ([RFC 7523]), which is a robust way to authenticate clients without a shared secret.
131131

132+
## Personal sessions (personal access tokens)
133+
134+
Personal access tokens are a credential that can be issued to give access to a user,
135+
with predefined scopes and a predefined expiry time.
136+
Either before or after expiry, the owner of the token can regenerate it, which produces a new
137+
access token with the same scopes but a new expiry time.
138+
139+
Personal access tokens are intended to fulfill two basic use cases:
140+
141+
1. an easy way to obtain a clean token for your own user, for use in automation and scripts;
142+
2. a way to obtain a token for administrative access of another user, either for ad-hoc administrative operations or to set up a bot or similar service.
143+
144+
In the future, users will be able to create their own personal access tokens, but this is currently not implemented
145+
so (1) is currently not supported.
146+
147+
For now, personal access tokens must be created, regenerated and revoked by administrators through the [Admin API], satisfying use case (2).
148+
[Element Admin](https://github.com/element-hq/element-admin), available by default in Element Server Suite, can be used to do this interactively.
149+
You can also use the online beta deployment at [admin-beta.element.dev](https://admin-beta.element.dev/). <!--- TODO stable deployment -->
150+
151+
### Validity
152+
153+
Personal sessions can be used so long as:
154+
155+
- the owner (creator) of the token is still an active and unlocked user (or static OAuth 2 client); and
156+
- the actor (target user, or user being controlled by the token) has not been deactivated. Though the actor is allowed to be locked.
157+
158+
132159
[MSC4108]: https://github.com/matrix-org/matrix-spec-proposals/pull/4108
133160
[RFC 6749]: https://datatracker.ietf.org/doc/html/rfc6749
134161
[RFC 7523]: https://datatracker.ietf.org/doc/html/rfc7523
@@ -140,3 +167,4 @@ The simplest type of client credentials is a client ID and client secret pair, b
140167
[`urn:synapse:admin:*`]: ../reference/scopes.md#urnsynapseadmin
141168
[`urn:mas:graphql:*`]: ../reference/scopes.md#urnmasgraphql
142169
[`urn:mas:admin`]: ../reference/scopes.md#urnmasadmin
170+
[Admin API]: ./admin-api.md

0 commit comments

Comments
 (0)