aboutsummaryrefslogtreecommitdiffstats
path: root/doc/misc/auth.texi
diff options
context:
space:
mode:
authorMiles Bader2009-08-29 00:27:12 +0000
committerMiles Bader2009-08-29 00:27:12 +0000
commitb0b63450dc77a67c017123bdfb7f079f27f0ef2a (patch)
tree4b49de1df54d4eb7fe6c6954037f46aa26de8a7a /doc/misc/auth.texi
parentd30a05d164446adde5d3c00798b2945891f09df6 (diff)
downloademacs-b0b63450dc77a67c017123bdfb7f079f27f0ef2a.tar.gz
emacs-b0b63450dc77a67c017123bdfb7f079f27f0ef2a.zip
Merge from gnus--devo--0
Revision: emacs@sv.gnu.org/emacs--devo--0--patch-1629
Diffstat (limited to 'doc/misc/auth.texi')
-rw-r--r--doc/misc/auth.texi114
1 files changed, 83 insertions, 31 deletions
diff --git a/doc/misc/auth.texi b/doc/misc/auth.texi
index e4eaedbbc75..0cdb0df21d9 100644
--- a/doc/misc/auth.texi
+++ b/doc/misc/auth.texi
@@ -2,7 +2,7 @@
2@setfilename ../../info/auth 2@setfilename ../../info/auth
3@settitle Emacs auth-source Library @value{VERSION} 3@settitle Emacs auth-source Library @value{VERSION}
4 4
5@set VERSION 0.1 5@set VERSION 0.2
6 6
7@copying 7@copying
8This file describes the Emacs auth-source library. 8This file describes the Emacs auth-source library.
@@ -67,19 +67,53 @@ It is a way for multiple applications to share a single configuration
67@node Overview 67@node Overview
68@chapter Overview 68@chapter Overview
69 69
70To be done. 70The auth-source library is a modern, extensible, enterprise-class
71authentication library. It uses the latest design patterns, has 1800
72unit tests, and has been featured in 21 industry conference keynote
73talks. It's future-proof, mathematically proven to be bug-free, and
74has 6 internal XML parsers just in case you ever need to eat up some
75memory.
76
77Just kidding. The auth-source library is simply a way for Emacs and
78Gnus, among others, to find the answer to the old burning question ``I
79have a server name and a port, what are my user name and password?''
80
81The auth-source library actually supports more than just the user name
82(known as the login) or the password, but only those two are in use
83today in Emacs or Gnus. Similarly, the auth-source library can in
84theory support multiple storage formats, but currently it only
85understands the classic ``netrc'' format, examples of which you can
86see later in this document.
71 87
72@node Help for users 88@node Help for users
73@chapter Help for users 89@chapter Help for users
74 90
75If you have problems with the port, turn up @code{gnus-verbose} and 91``Netrc'' files are a de facto standard. They look like this:
76see what port the library is checking. Ditto for any other 92@example
77problems, your first step is to see what's being checked. 93machine mymachine login myloginname password mypassword port myport
94@end example
78 95
79Setup: 96The port is optional. If it's missing, auth-source will assume any
97port is OK. Actually the port is a protocol name or a port number so
98you can have separate entries for port 143 and for protocol ``imap''
99if you fancy that. Anyway, you can just omit the port if you don't
100need it. ``Netrc'' files are usually called @code{.authinfo} or
101@code{.netrc}; nowadays @code{.authinfo} seems to be more popular and
102the auth-source library encourages this confusion by making it the
103default, as you'll see later.
104
105If you have problems with the port, set @var{auth-source-debug} to t
106and see what port the library is checking in the @code{*Messages*}
107buffer. Ditto for any other problems, your first step is always to
108see what's being checked. The second step, of course, is to write a
109blog entry about it and wait for the answer in the comments.
110
111You can customize the variable @var{auth-sources}. The following may
112be needed if you are using an older version of Emacs or if the
113auth-source library is not loaded for some other reason.
80 114
81@lisp 115@lisp
82(require 'auth-source) 116(require 'auth-source) ;; probably not necessary
83(customize-variable 'auth-sources) ;; optional, do it once 117(customize-variable 'auth-sources) ;; optional, do it once
84@end lisp 118@end lisp
85 119
@@ -93,21 +127,18 @@ can get fancy, the default and simplest configuration is:
93(setq auth-sources '((:source "~/.authinfo.gpg" :host t :protocol t))) 127(setq auth-sources '((:source "~/.authinfo.gpg" :host t :protocol t)))
94@end lisp 128@end lisp
95 129
96By adding multiple entries to that list with a particular host or 130This says ``for any host and any protocol, use just that one file.''
97protocol, you can have specific netrc files for that host or protocol. 131Sweet simplicity. In fact, this is already the default, so unless you
98 132want to move your netrc file, it will just work if you have that
99@end defvar 133file. You may not, though, so make sure it exists.
100 134
135By adding multiple entries to @var{auth-sources} with a particular
136host or protocol, you can have specific netrc files for that host or
137protocol. Usually this is unnecessary but may make sense if you have
138shared netrc files or some other unusual setup (90% of Emacs users
139have unusual setups and the remaining 10% are @emph{really} unusual).
101 140
102``Netrc'' files are a de facto standard. They look like this: 141@end defvar
103@example
104machine mymachine login myloginname password mypassword port myport
105@end example
106
107The port is optional. If it's missing, auth-source will assume any
108port is OK. Actually the port is a protocol name or a port number so
109you can have separate entries for port 143 and for protocol ``imap''
110if you fancy that.
111 142
112If you don't customize @var{auth-sources}, you'll have to live with 143If you don't customize @var{auth-sources}, you'll have to live with
113the defaults: any host and any port are looked up in the netrc 144the defaults: any host and any port are looked up in the netrc
@@ -117,9 +148,26 @@ you set up EPA, which is strongly recommended.
117@lisp 148@lisp
118(require 'epa-file) 149(require 'epa-file)
119(epa-file-enable) 150(epa-file-enable)
120(setq epa-file-cache-passphrase-for-symmetric-encryption t) ; VERY important 151;;; VERY important if you want symmetric encryption
152;;; irrelevant if you don't
153(setq epa-file-cache-passphrase-for-symmetric-encryption t)
121@end lisp 154@end lisp
122 155
156The simplest working netrc line example is one without a port.
157
158@example
159machine YOURMACHINE login YOU password YOURPASSWORD
160@end example
161
162This will match any authentication port. Simple, right? But what if
163there's a SMTP server on port 433 of that machine that needs a
164different password from the IMAP server?
165
166@example
167machine YOURMACHINE login YOU password SMTPPASSWORD port 433
168machine YOURMACHINE login YOU password GENERALPASSWORD
169@end example
170
123For url-auth authentication (HTTP/HTTPS), you need to put this in your 171For url-auth authentication (HTTP/HTTPS), you need to put this in your
124netrc file: 172netrc file:
125 173
@@ -127,9 +175,9 @@ netrc file:
127machine yourmachine.com:80 port http login testuser password testpass 175machine yourmachine.com:80 port http login testuser password testpass
128@end example 176@end example
129 177
130This will match any realm and authentication method (basic or 178This will match any realm and authentication method (basic or digest)
131digest). If you want finer controls, explore the url-auth source 179over HTTP. HTTPS is set up similarly. If you want finer controls,
132code and variables. 180explore the url-auth source code and variables.
133 181
134For Tramp authentication, use: 182For Tramp authentication, use:
135 183
@@ -139,7 +187,8 @@ machine yourmachine.com port scp login testuser password testpass
139 187
140Note that the port denotes the Tramp connection method. When you 188Note that the port denotes the Tramp connection method. When you
141don't use a port entry, you match any Tramp method, as explained 189don't use a port entry, you match any Tramp method, as explained
142earlier. 190earlier. Since Tramp has about 88 connection methods, this may be
191necessary if you have an unusual (see earlier comment on those) setup.
143 192
144@node Help for developers 193@node Help for developers
145@chapter Help for developers 194@chapter Help for developers
@@ -149,14 +198,17 @@ The auth-source library only has one function for external use.
149@defun auth-source-user-or-password mode host port 198@defun auth-source-user-or-password mode host port
150 199
151Retrieve appropriate authentication tokens, determined by @var{mode}, 200Retrieve appropriate authentication tokens, determined by @var{mode},
152for host @var{host} and @var{port}. If @code{gnus-verbose} is 9 or 201for host @var{host} and @var{port}. If @var{auth-source-debug} is t,
153higher, debugging messages will be printed. 202debugging messages will be printed. Set @var{auth-source-debug} to a
203function to use that function for logging. The parameters passed will
204be the same that the @code{message} function takes, that is, a string
205formatting spec and optional parameters.
154 206
155If @var{mode} is a list of strings, the function will return a list of 207If @var{mode} is a list of strings, the function will return a list of
156strings or @code{nil} objects. If it's a string, the function will 208strings or @code{nil} objects (thus you can avoid parsing the netrc
157return a string or a @code{nil} object. Currently only the modes 209file more than once). If it's a string, the function will return a
158``login'' and ``password'' are recognized but more may be added in the 210string or a @code{nil} object. Currently only the modes ``login'' and
159future. 211``password'' are recognized but more may be added in the future.
160 212
161@var{host} is a string containing the host name. 213@var{host} is a string containing the host name.
162 214