mirror of
https://github.com/matrix-org/matrix-spec
synced 2026-04-26 12:34:11 +02:00
Compare commits
3 commits
827ee5f880
...
e366f451c2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e366f451c2 | ||
|
|
161fe0df33 | ||
|
|
e09c708ae7 |
|
|
@ -39,7 +39,7 @@ A client asks a server to invite a user by their third-party identifier.
|
||||||
|
|
||||||
Upon receipt of an [`/invite`](#thirdparty_post_matrixclientv3roomsroomidinvite),
|
Upon receipt of an [`/invite`](#thirdparty_post_matrixclientv3roomsroomidinvite),
|
||||||
the server is expected to look up the third-party identifier with the provided
|
the server is expected to look up the third-party identifier with the provided
|
||||||
identity server byt making a call to [`/lookup`](/identity-service-api/#post_matrixidentityv2lookup).
|
identity server by making a call to [`/_matrix/identity/v2/lookup`](/identity-service-api/#post_matrixidentityv2lookup).
|
||||||
If the lookup yields a result for a Matrix User ID then the normal [invite
|
If the lookup yields a result for a Matrix User ID then the normal [invite
|
||||||
process](/server-server-api/#inviting-to-a-room) can be initiated. This process
|
process](/server-server-api/#inviting-to-a-room) can be initiated. This process
|
||||||
ends up looking like this:
|
ends up looking like this:
|
||||||
|
|
@ -69,7 +69,8 @@ ends up looking like this:
|
||||||
```
|
```
|
||||||
|
|
||||||
However, if the lookup does not yield a bound User ID, the homeserver must store
|
However, if the lookup does not yield a bound User ID, the homeserver must store
|
||||||
the invite on the identity server with a call to [`/store-invite`](/identity-service-api/#post_matrixidentityv2store-invite)
|
the invite on the identity server with a call to
|
||||||
|
[`/_matrix/identity/v2/store-invite`](/identity-service-api/#post_matrixidentityv2store-invite)
|
||||||
and emit a valid [`m.room.third_party_invite`](#mroomthird_party_invite) event
|
and emit a valid [`m.room.third_party_invite`](#mroomthird_party_invite) event
|
||||||
to the room. This process ends up looking like this:
|
to the room. This process ends up looking like this:
|
||||||
|
|
||||||
|
|
@ -104,14 +105,14 @@ to the room. This process ends up looking like this:
|
||||||
```
|
```
|
||||||
|
|
||||||
The third-party user will then need to verify their identity, which results in a
|
The third-party user will then need to verify their identity, which results in a
|
||||||
request to [`/3pid/onbind`](/server-server-api/#put_matrixfederationv13pidonbind)
|
request to [`/_matrix/federation/v1/3pid/onbind`](/server-server-api/#put_matrixfederationv13pidonbind)
|
||||||
from the identity server to the homeserver that bound the third-party identifier
|
from the identity server to the homeserver that bound the third-party identifier
|
||||||
to a user. The homeserver then exchanges the `m.room.third_party_invite` event
|
to a user. The homeserver then exchanges the `m.room.third_party_invite` event
|
||||||
in the room for a complete `m.room.member` event with
|
in the room for a complete [`m.room.member`](#mroommember) event with
|
||||||
`content.membership: invite` and a `content.third_party_invite` property for the
|
`content.membership: invite` and a `content.third_party_invite` property for the
|
||||||
user that has bound the third-party identifier. If the invitee is on a different
|
user that has bound the third-party identifier. If the invitee is on a different
|
||||||
homeserver than the inviting user, the invitee's homeserver makes a request to
|
homeserver than the inviting user, the invitee's homeserver makes a request to
|
||||||
[`/exchange_third_party_invite`](/server-server-api/#put_matrixfederationv1exchange_third_party_inviteroomid).
|
[`/_matrix/federation/v1/exchange_third_party_invite/{roomId}`](/server-server-api/#put_matrixfederationv1exchange_third_party_inviteroomid).
|
||||||
|
|
||||||
All homeservers MUST verify the signature in the `m.room.member` event's
|
All homeservers MUST verify the signature in the `m.room.member` event's
|
||||||
`content.third_party_invite.signed` object.
|
`content.third_party_invite.signed` object.
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,8 @@ paths:
|
||||||
properties:
|
properties:
|
||||||
public_key:
|
public_key:
|
||||||
type: string
|
type: string
|
||||||
description: Public key using standard or URL-safe base64 encoding.
|
description: |-
|
||||||
|
[Unpadded Base64](/appendices/#unpadded-base64)-encoded public key.
|
||||||
required:
|
required:
|
||||||
- public_key
|
- public_key
|
||||||
examples:
|
examples:
|
||||||
|
|
@ -74,7 +75,8 @@ paths:
|
||||||
- in: query
|
- in: query
|
||||||
name: public_key
|
name: public_key
|
||||||
required: true
|
required: true
|
||||||
description: The unpadded standard or URL-safe base64-encoded public key to check.
|
description: |-
|
||||||
|
The [unpadded Base64](/appendices/#unpadded-base64)-encoded public key to check.
|
||||||
example: VXuGitF39UH5iRfvbIknlvlAVKgD1BsLDMvBf0pmp7c
|
example: VXuGitF39UH5iRfvbIknlvlAVKgD1BsLDMvBf0pmp7c
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -105,7 +107,14 @@ paths:
|
||||||
- in: query
|
- in: query
|
||||||
name: public_key
|
name: public_key
|
||||||
required: true
|
required: true
|
||||||
description: The unpadded standard or URL-safe base64-encoded public key to check.
|
description: |-
|
||||||
|
The [unpadded Base64](/appendices/#unpadded-base64)-encoded public
|
||||||
|
key to check.
|
||||||
|
|
||||||
|
This MUST be the exact same encoded string returned in the response
|
||||||
|
of the [`/store-invite`](/identity-service-api/#post_matrixidentityv2store-invite)
|
||||||
|
endpoint, or found in the corresponding [`m.room.third_party_invite`](/client-server-api/#mroomthird_party_invite)
|
||||||
|
event, so it may use the standard or URL-safe alphabets.
|
||||||
example: VXuGitF39UH5iRfvbIknlvlAVKgD1BsLDMvBf0pmp7c
|
example: VXuGitF39UH5iRfvbIknlvlAVKgD1BsLDMvBf0pmp7c
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
|
|
|
||||||
|
|
@ -25,11 +25,11 @@ properties:
|
||||||
format: uri
|
format: uri
|
||||||
public_key:
|
public_key:
|
||||||
description: |-
|
description: |-
|
||||||
A base64-encoded ed25519 key with which the token must be signed
|
An Ed25519 key with which the token must be signed (though a signature
|
||||||
(though a signature from any entry in public_keys is also sufficient).
|
from any entry in `public_keys` is also sufficient).
|
||||||
|
|
||||||
The key is encoded using unpadded standard or URL-safe base64
|
The key is encoded using [Unpadded Base64](/appendices/#unpadded-base64),
|
||||||
encoding.
|
using the standard or URL-safe alphabets.
|
||||||
|
|
||||||
This exists for backwards compatibility.
|
This exists for backwards compatibility.
|
||||||
type: string
|
type: string
|
||||||
|
|
@ -47,10 +47,10 @@ properties:
|
||||||
type: string
|
type: string
|
||||||
public_key:
|
public_key:
|
||||||
description: |-
|
description: |-
|
||||||
A base-64 encoded ed25519 key with which token may be signed.
|
An Ed25519 key with which the token may be signed.
|
||||||
|
|
||||||
The key is encoded using unpadded standard or URL-safe base64
|
The key is encoded using [Unpadded Base64](/appendices/#unpadded-base64),
|
||||||
encoding.
|
using the standard or URL-safe alphabets.
|
||||||
type: string
|
type: string
|
||||||
required:
|
required:
|
||||||
- public_key
|
- public_key
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue