flesh out
parent
783fd78a6f
commit
ed4d805d2f
@ -1,108 +1,76 @@
|
|||||||
# Allowing 3PID Owners to Rebind
|
# Allowing 3PID Owners to Rebind
|
||||||
|
|
||||||
This is a proposal to allow 3PID owners to rebind their 3PIDs using the `POST
|
3PID
|
||||||
/_matrix/client/r0/account/3pid/email/requestToken` endpoint. The spec
|
noun
|
||||||
currently states that if a user tries to call this endpoint with an email
|
A third-party identifier such as an email address or phone number, that
|
||||||
address they already own, then the request should be rejected.
|
can be tied to your Matrix ID in order for your contacts outside of
|
||||||
|
Matrix to find you, typically with the help of an [identity
|
||||||
This MSC calls for those requests to be accepted iff the requesting user
|
server](https://matrix.org/docs/spec/identity_service/r0.2.1.html).
|
||||||
currently has the 3PID bound to their Matrix ID, marking them as the user in
|
|
||||||
control of this 3PID.
|
As part of the on-going privacy work, Matrix client applications are
|
||||||
|
attempting to make the concept of an identity server more clear to the user,
|
||||||
This would allow users to bind their 3PIDs to different servers, even if the
|
as well as allowing a user to interact with multiple identity servers while
|
||||||
homeserver has already been made aware of it.
|
they're logged in.
|
||||||
|
|
||||||
--- TODO, below ---
|
As part of facilitating this work, Matrix clients should be able to allow
|
||||||
|
users, while logged in, the ability to pick an identity server, see what
|
||||||
|
3PIDs they currently have bound to their Matrix ID, and bind/unbind as they
|
||||||
|
desire.
|
||||||
|
|
||||||
|
When implementating this functionality, a technicality in the spec was found
|
||||||
|
to prevent the ability to bind the same 3PID to multiple identity servers.
|
||||||
|
The line "The homeserver must check that the given email address is **not**
|
||||||
|
already associated with an account on this homeserver." appears under the
|
||||||
|
[POST
|
||||||
|
/_matrix/client/r0/account/3pid/email/requestToken](https://matrix.org/docs/spec/client_server/r0.5.0#post-matrix-client-r0-account-3pid-email-requesttoken)
|
||||||
|
line. The same goes for the [equivalent msisdn
|
||||||
|
endpoint](https://matrix.org/docs/spec/client_server/r0.5.0#post-matrix-client-r0-account-3pid-msisdn-requesttoken).
|
||||||
|
|
||||||
|
If a user binds their email address, through the homeserver to identity
|
||||||
|
server A, then switches to identity server B to try and do the same, the
|
||||||
|
homeserver will reject the second request as this email address has already
|
||||||
|
been bound. This is due to the homeserver attaching the email address user's
|
||||||
|
accounts whenever a bind is performed through them.
|
||||||
|
|
||||||
## Proposal
|
## Proposal
|
||||||
|
|
||||||
*Here is where you'll reinforce your position from the introduction in more detail, as well as cover
|
This proposal calls for allowing 3PID owners to rebind their 3PIDs using the
|
||||||
the technical points of your proposal. Including rationale for your proposed solution and detailing
|
[POST
|
||||||
why parts are important helps reviewers understand the problem at hand. Not including enough detail
|
/_matrix/client/r0/account/3pid/email/requestToken](https://matrix.org/docs/spec/client_server/r0.5.0#post-matrix-client-r0-account-3pid-email-requesttoken) and [POST
|
||||||
can result in people guessing, leading to confusing arguments in the comments section. The example
|
/_matrix/client/r0/account/3pid/msisdn/requestToken](https://matrix.org/docs/spec/client_server/r0.5.0#post-matrix-client-r0-account-3pid-msisdn-requesttoken)
|
||||||
here covers why templates are important again, giving a stronger argument as to why we should have
|
endpoints by extending the definition of what homeservers should check before rejecting a bind.
|
||||||
a template. Afterwards, it goes on to cover the specifics of what the template could look like.*
|
|
||||||
|
|
||||||
Having a default template that everyone can use is important. Without a template, proposals would be
|
|
||||||
all over the place and the minimum amount of detail may be left out. Introducing a template to the
|
|
||||||
proposal process helps ensure that some amount of consistency is present across multiple proposals,
|
|
||||||
even if each author decides to abandon the template.
|
|
||||||
|
|
||||||
The default template should be a markdown document because the MSC process requires authors to write
|
Homeservers should reject the binding of a 3PID if it already been bound,
|
||||||
a proposal in markdown. Using other formats wouldn't make much sense because that would prevent authors
|
**unless** the requesting user is the one who originally bound that 3PID. If
|
||||||
from copy/pasting the template.
|
so, then they should be able to bind it again if they choose.
|
||||||
|
|
||||||
The template should have the following sections:
|
|
||||||
|
|
||||||
* **Introduction** - This should cover the primary problem and broad description of the solution.
|
|
||||||
* **Proposal** - The gory details of the proposal.
|
|
||||||
* **Tradeoffs** - Any items of the proposal that are less desirable should be listed here. Alternative
|
|
||||||
solutions to the same problem could also be listed here.
|
|
||||||
* **Potential issues** - This is where problems with the proposal would be listed, such as changes
|
|
||||||
that are not backwards compatible.
|
|
||||||
* **Security considerations** - Discussion of what steps were taken to avoid security issues in the
|
|
||||||
future and any potential risks in the proposal.
|
|
||||||
* **Conclusion** - A repeat of the problem and solution.
|
|
||||||
|
|
||||||
Furthermore, the template should not be required to be followed. However it is strongly recommended to
|
|
||||||
maintain some sense of consistency between proposals.
|
|
||||||
|
|
||||||
|
In doing so, it would allow users to bind their 3PIDs to multiple identity
|
||||||
|
servers, even if the homeserver has already been made aware of it.
|
||||||
|
|
||||||
## Tradeoffs
|
## Tradeoffs
|
||||||
|
|
||||||
*This is where alternative solutions could be listed. There's almost always another way to do things
|
Identity servers will still let 3PIDs be rebound to another Matrix ID, while
|
||||||
and this section gives you the opportunity to highlight why those ways are not as desirable. The
|
a single homeserver won't let a 3PID transition between two users. If one
|
||||||
argument made in this example is that all of the text provided by the template could be integrated
|
thinks about typical internet services however, you aren't allowed to simply
|
||||||
into the proposals introduction, although with some risk of losing clarity.*
|
take an email address from another account even if you have control of it.
|
||||||
|
|
||||||
Instead of adding a template to the repository, the assistance it provides could be integrated into
|
|
||||||
the proposal process itself. There is an argument to be had that the proposal process should be as
|
|
||||||
descriptive as possible, although having even more detail in the proposals introduction could lead to
|
|
||||||
some confusion or lack of understanding. Not to mention if the document is too large then potential
|
|
||||||
authors could be scared off as the process suddenly looks a lot more complicated than it is. For those
|
|
||||||
reasons, this proposal does not consider integrating the template in the proposals introduction a good
|
|
||||||
idea.
|
|
||||||
|
|
||||||
|
|
||||||
## Potential issues
|
## Potential issues
|
||||||
|
|
||||||
*Not all proposals are perfect. Sometimes there's a known disadvantage to implementing the proposal,
|
Newer clients will expect homeservers to allow them to switch between
|
||||||
and they should be documented here. There should be some explanation for why the disadvantage is
|
identity servers and bind/rebind emails as they please. If dealing with an
|
||||||
acceptable, however - just like in this example.*
|
older homeserver, clients will receive an `HTTP 400 M_THREEPID_IN_USE`.
|
||||||
|
Clients should be prepared to understand that this may just mean they are
|
||||||
Someone is going to have to spend the time to figure out what the template should actually have in it.
|
dealing with an old homeserver, versus the 3PID already being bound on this
|
||||||
It could be a document with just a few headers or a supplementary document to the process explanation,
|
homeserver by another user.
|
||||||
however more detail should be included. A template that actually proposes something should be considered
|
|
||||||
because it not only gives an opportunity to show what a basic proposal looks like, it also means that
|
|
||||||
explanations for each section can be described. Spending the time to work out the content of the template
|
|
||||||
is beneficial and not considered a significant problem because it will lead to a document that everyone
|
|
||||||
can follow.
|
|
||||||
|
|
||||||
|
|
||||||
## Security considerations
|
## Security considerations
|
||||||
|
|
||||||
*Some proposals may have some security aspect to them that was addressed in the proposed solution. This
|
None.
|
||||||
section is a great place to outline some of the security-sensitive components of your proposal, such as
|
|
||||||
why a particular approach was (or wasn't) taken. The example here is a bit of a stretch and unlikely to
|
|
||||||
actually be worthwhile of including in a proposal, but it is generally a good idea to list these kinds
|
|
||||||
of concerns where possible.*
|
|
||||||
|
|
||||||
By having a template available, people would know what the desired detail for a proposal is. This is not
|
|
||||||
considered a risk because it is important that people understand the proposal process from start to end.
|
|
||||||
|
|
||||||
|
|
||||||
## Conclusion
|
## Conclusion
|
||||||
|
|
||||||
*Repeating the problem and solution in different words helps reviewers understand the problem a bit more.
|
By lifting the restriction of not allowing a user to bind a 3PID multiple
|
||||||
This section should wrap up any loose ends left in the document, as well as cover a brief overview of the
|
times, we unlock the ability to interact with multiple identity servers on
|
||||||
content in each section. Note that the example here doesn't touch on the specific implementation details
|
the same account. This not only allows the user to play around and gain a
|
||||||
described in the "Proposal" section - just the high-level points made there.*
|
better understanding of the purpose of an identity server, but it is also one
|
||||||
|
step towards further decentralisation in the identity server space.
|
||||||
Not having a template for people to follow when making their proposals could lead to large differences
|
|
||||||
between each MSC. This would make it difficult for reviewers, and there's a potential that some information
|
|
||||||
could be left out by accident. A template written in the same format the proposal process requires would
|
|
||||||
give authors the ability to understand how to better explain their own proposal.
|
|
||||||
|
|
||||||
A descriptive template would help potential authors comprehend what the proposal process requires by
|
|
||||||
demonstrating what is expected of a proposal. Although this is more effort up front, it would lead to more
|
|
||||||
time saved in the future due to questions about the process.
|
|
||||||
|
Loading…
Reference in New Issue