Commit | Line | Data |
---|---|---|
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 | |
15 | This file describes the Emacs auth-source library. | |
16 | ||
17 | Copyright @copyright{} 2008, 2009 | |
18 | Free Software Foundation, Inc. | |
19 | ||
20 | @quotation | |
21 | Permission is granted to copy, distribute and/or modify this document | |
22 | under the terms of the GNU Free Documentation License, Version 1.3 or | |
23 | any later version published by the Free Software Foundation; with no | |
24 | Invariant Sections, with the Front-Cover texts being ``A GNU Manual,'' | |
25 | and with the Back-Cover Texts as in (a) below. A copy of the license | |
26 | is included in the section entitled ``GNU Free Documentation License'' | |
27 | in the Emacs manual. | |
28 | ||
29 | (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and | |
30 | modify this GNU manual. Buying copies from the FSF supports it in | |
31 | developing GNU and promoting software freedom.'' | |
32 | ||
33 | This document is part of a collection distributed under the GNU Free | |
34 | Documentation License. If you want to distribute this document | |
35 | separately from the collection, you can do so by adding a copy of the | |
36 | license 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 | |
57 | This manual describes the Emacs auth-source library. | |
58 | ||
59 | It 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 | ||
74 | To be done. | |
75 | ||
76 | @node Help for users | |
77 | @chapter Help for users | |
78 | ||
79 | If you have problems with the port, turn up @code{gnus-verbose} and | |
80 | see what port the library is checking. Ditto for any other | |
81 | problems, your first step is to see what's being checked. | |
82 | ||
83 | Setup: | |
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 | ||
92 | The @var{auth-sources} variable tells the auth-source library where | |
93 | your netrc files live for a particular host and protocol. While you | |
94 | can 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 | ||
100 | By adding multiple entries to that list with a particular host or | |
101 | protocol, 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 | |
108 | machine mymachine login myloginname password mypassword port myport | |
109 | @end example | |
110 | ||
111 | The port is optional. If it's missing, auth-source will assume any | |
112 | port is OK. Actually the port is a protocol name or a port number so | |
113 | you can have separate entries for port 143 and for protocol ``imap'' | |
114 | if you fancy that. | |
115 | ||
116 | If you don't customize @var{auth-sources}, you'll have to live with | |
117 | the defaults: any host and any port are looked up in the netrc | |
118 | file @code{~/.authinfo.gpg}. This is an encrypted file if and only if | |
119 | you 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 | ||
127 | For url-auth authentication (HTTP/HTTPS), you need to put this in your | |
128 | netrc file: | |
129 | ||
130 | @example | |
131 | machine yourmachine.com:80 port http login testuser password testpass | |
132 | @end example | |
133 | ||
134 | This will match any realm and authentication method (basic or | |
135 | digest). If you want finer controls, explore the url-auth source | |
136 | code and variables. | |
137 | ||
138 | For Tramp authentication, use: | |
139 | ||
140 | @example | |
141 | machine yourmachine.com port scp login testuser password testpass | |
142 | @end example | |
143 | ||
144 | Note that the port denotes the Tramp connection method. When you | |
145 | don't use a port entry, you match any Tramp method, as explained | |
146 | earlier. | |
147 | ||
148 | @node Help for developers | |
149 | @chapter Help for developers | |
150 | ||
151 | The auth-source library only has one function for external use. | |
152 | ||
153 | @defun auth-source-user-or-password mode host port | |
154 | ||
155 | Retrieve appropriate authentication tokens, determined by @var{mode}, | |
156 | for host @var{host} and @var{port}. If @code{gnus-verbose} is 9 or | |
157 | higher, debugging messages will be printed. | |
158 | ||
159 | If @var{mode} is a list of strings, the function will return a list of | |
160 | strings or @code{nil} objects. If it's a string, the function will | |
161 | return a string or a @code{nil} object. Currently only the modes | |
162 | ``login'' and ``password'' are recognized but more may be added in the | |
163 | future. | |
164 | ||
165 | @var{host} is a string containing the host name. | |
166 | ||
167 | @var{port} contains the protocol name (e.g. ``imap'') or | |
168 | a port number. It must be a string, corresponding to the port in the | |
169 | users' 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 |