Merge from gnus--devo--0
[bpt/emacs.git] / doc / misc / auth.texi
CommitLineData
9eb59592
MB
1\input texinfo @c -*-texinfo-*-
2
3@setfilename auth.info
4
5@set VERSION 0.1
6
7@dircategory Emacs
8@direntry
9* auth-source: (auth). The Emacs auth-source library.
10@end direntry
11
12@settitle Emacs auth-source Library @value{VERSION}
13
14@copying
15This file describes the Emacs auth-source library.
16
17Copyright @copyright{} 2008, 2009
18Free Software Foundation, Inc.
19
20@quotation
21Permission is granted to copy, distribute and/or modify this document
22under the terms of the GNU Free Documentation License, Version 1.3 or
23any later version published by the Free Software Foundation; with no
24Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
25and with the Back-Cover Texts as in (a) below. A copy of the license
26is included in the section entitled ``GNU Free Documentation License''
27in the Emacs manual.
28
29(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
30modify this GNU manual. Buying copies from the FSF supports it in
31developing GNU and promoting software freedom.''
32
33This document is part of a collection distributed under the GNU Free
34Documentation License. If you want to distribute this document
35separately from the collection, you can do so by adding a copy of the
36license to the document, as described in section 6 of the license.
37@end quotation
38@end copying
39
40@tex
41
42@titlepage
43@title Emacs auth-source Library
44
45@author by Ted Zlatanov
46@page
47
48@vskip 0pt plus 1filll
49@insertcopying
50@end titlepage
51@page
52
53@end tex
54
55@node Top
56@top Emacs auth-source
57This manual describes the Emacs auth-source library.
58
59It is a way for multiple applications to share a single configuration
60(in Emacs and in files) for user convenience.
61
62@menu
63* Overview:: Overview of the auth-source library.
64* Help for users::
65* Help for developers::
66* Index::
67* Function Index::
68* Variable Index::
69@end menu
70
71@node Overview
72@chapter Overview
73
74To be done.
75
76@node Help for users
77@chapter Help for users
78
79If you have problems with the port, turn up @code{gnus-verbose} and
80see what port the library is checking. Ditto for any other
81problems, your first step is to see what's being checked.
82
83Setup:
84
85@lisp
86(require 'auth-source)
87(customize-variable 'auth-sources) ;; optional, do it once
88@end lisp
89
90@defvar auth-sources
91
92The @var{auth-sources} variable tells the auth-source library where
93your netrc files live for a particular host and protocol. While you
94can get fancy, the default and simplest configuration is:
95
96@lisp
97(setq auth-sources '((:source "~/.authinfo.gpg" :host t :protocol t)))
98@end lisp
99
100By adding multiple entries to that list with a particular host or
101protocol, you can have specific netrc files for that host or protocol.
102
103@end defvar
104
105
106``Netrc'' files are a de facto standard. They look like this:
107@example
108machine mymachine login myloginname password mypassword port myport
109@end example
110
111The port is optional. If it's missing, auth-source will assume any
112port is OK. Actually the port is a protocol name or a port number so
113you can have separate entries for port 143 and for protocol ``imap''
114if you fancy that.
115
116If you don't customize @var{auth-sources}, you'll have to live with
117the defaults: any host and any port are looked up in the netrc
118file @code{~/.authinfo.gpg}. This is an encrypted file if and only if
119you set up EPA, which is strongly recommended.
120
121@lisp
122(require 'epa-file)
123(epa-file-enable)
124(setq epa-file-cache-passphrase-for-symmetric-encryption t) ; VERY important
125@end lisp
126
127For url-auth authentication (HTTP/HTTPS), you need to put this in your
128netrc file:
129
130@example
131machine yourmachine.com:80 port http login testuser password testpass
132@end example
133
134This will match any realm and authentication method (basic or
135digest). If you want finer controls, explore the url-auth source
136code and variables.
137
138For Tramp authentication, use:
139
140@example
141machine yourmachine.com port scp login testuser password testpass
142@end example
143
144Note that the port denotes the Tramp connection method. When you
145don't use a port entry, you match any Tramp method, as explained
146earlier.
147
148@node Help for developers
149@chapter Help for developers
150
151The auth-source library only has one function for external use.
152
153@defun auth-source-user-or-password mode host port
154
155Retrieve appropriate authentication tokens, determined by @var{mode},
156for host @var{host} and @var{port}. If @code{gnus-verbose} is 9 or
157higher, debugging messages will be printed.
158
159If @var{mode} is a list of strings, the function will return a list of
160strings or @code{nil} objects. If it's a string, the function will
161return a string or a @code{nil} object. Currently only the modes
162``login'' and ``password'' are recognized but more may be added in the
163future.
164
165@var{host} is a string containing the host name.
166
167@var{port} contains the protocol name (e.g. ``imap'') or
168a port number. It must be a string, corresponding to the port in the
169users' netrc files.
170
171@example
172;; IMAP example
173(setq auth (auth-source-user-or-password
174 '("login" "password")
175 "anyhostnamehere"
176 "imap"))
177(nth 0 auth) ; the login name
178(nth 1 auth) ; the password
179@end example
180
181@end defun
182
183@node Index
184@chapter Index
185@printindex cp
186
187@node Function Index
188@chapter Function Index
189@printindex fn
190
191@node Variable Index
192@chapter Variable Index
193@printindex vr
194
195@summarycontents
196@contents
197@bye
198
199@c End:
200
201@ignore
202 arch-tag: 7b835fd3-473f-40fc-9776-1c4e49d26c94
203@end ignore