~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to doc/developers/authentication-ring.txt

  • Committer: Tarmac
  • Author(s): Vincent Ladeuil
  • Date: 2017-01-30 14:42:05 UTC
  • mfrom: (6620.1.1 trunk)
  • Revision ID: tarmac-20170130144205-r8fh2xpmiuxyozpv
Merge  2.7 into trunk including fix for bug #1657238 [r=vila]

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
This specification describes a way to provide user and passwords to bzr while
62
62
storing them in a relatively safe way.
63
63
 
64
 
Note that ssh servers can be configured to use keys instead of (``user``,
 
64
Note that SSH servers can be configured to use keys instead of (``user``,
65
65
``password``) and, when used with appropriate agents, provide the same kind of
66
 
comfort this specification aims to provide for all other schemes. Since ssh
 
66
comfort this specification aims to provide for all other schemes. Since SSH 
67
67
agents provide a safer way to secure the passwords, this specification is
68
68
restricted to providing ``user`` but does not provide ``password`` when used
69
 
for ssh.
 
69
for SSH.
70
70
 
71
71
Authentication definitions
72
72
--------------------------
77
77
1. user and password
78
78
 
79
79
``FTP`` and ``SFTP`` needs a (``user``, ``password``) to authenticate against a
80
 
``host`` (SFTP can use ssh keys too, but we don't talk about that in this
81
 
specification as ssh agents provide a better solution).
 
80
``host`` (SFTP can use SSH keys too, but we don't talk about that in this
 
81
specification as SSH agents provide a better solution).
82
82
 
83
83
2. user, realm and password
84
84
 
115
115
 
116
116
  * ``path``: can be empty (FTP or SFTP will never use it),
117
117
 
118
 
  * ``user``: can be empty (``bzr`` will defaults to python's
119
 
    ``getpass.get_user()`` for FTP, SFTP and ssh),
 
118
  * ``user``: can be empty (``bzr`` will defaults to Python's
 
119
    ``getpass.get_user()`` for FTP, SFTP and SSH),
120
120
 
121
121
  * ``password``: can be empty (for security reasons, a user may use the
122
122
    definitions without storing the passwords but want to be prompted ; or the
158
158
 
159
159
Encoding passwords in ``base64``, while weak, provides protection against
160
160
accidental reading (if an administrator have to look into the file, he will not
161
 
see the passwords in clear).(Not implemented yet).
 
161
see the passwords in clear).
162
162
 
163
163
This specification intends to ease the authentication providing, not to secure
164
164
it in the best possible way.
266
266
        scheme=https
267
267
        host=home.net
268
268
        user=joe
 
269
        # Obtain the base64 encoded password by running 'echo -n "secret-pass" | base64'
269
270
        password='c2VjcmV0LXBhc3M='
270
271
        password_encoding=base64
271
272
        verify_certificates=no # Still searching a free certificate provider
303
304
  * source hosting provider declaring sub-domains for each project::
304
305
 
305
306
        [sfnet domain]
306
 
        # we use sftp, but ssh is the scheme used for authentication
 
307
        # we use SFTP, but SSH is the scheme used for authentication
307
308
        scheme=ssh
308
309
        # The leading '.' ensures that 'sf.net' alone doesn't match
309
310
        host=.sf.net
347
348
* No assumptions should be made about the clients of this service
348
349
  (i.e. Transport is the primary target but plugins must be able to use it as
349
350
  well, the definitions used: (``scheme, host, [port,] path``) are general
350
 
  enough to described credentials for ``svn`` servers or LaunchPad xmlrpc
 
351
  enough to described credentials for ``svn`` servers or LaunchPad XML-RPC
351
352
  calls).
352
353
 
353
354
* Policies regarding default users may be taken into account by the
361
362
  a password.
362
363
 
363
364
* As this specification proposes a matching between some credentials
364
 
  definitions and real urls, the implementation provides an optional UI
 
365
  definitions and real URLs, the implementation provides an optional UI
365
366
  feedback about which credential definition is used. Using ``-Dauth`` will
366
367
  output some traces in the ``.bzr.log`` file metionning the sections
367
368
  used. This allows the user to validate his definitions.
392
393
    * plugins can be written and registered to handle the associated
393
394
      ``password_encoding``.
394
395
 
395
 
  * Could it be possible to encode the whole authentication file with a ssh key
 
396
  * Could it be possible to encode the whole authentication file with an SSH key
396
397
    ?
397
398
 
398
399
    * yes and if the user configure a ssh-agent it will not be queried for