File: AuthPolicy.html

package info (click to toggle)
commons-httpclient 3.1-11%2Bdeb8u1
  • links: PTS, VCS
  • area: main
  • in suites: jessie
  • size: 19,344 kB
  • ctags: 68,956
  • sloc: java: 30,282; xml: 855; makefile: 15
file content (202 lines) | stat: -rw-r--r-- 18,081 bytes parent folder | download | duplicates (9)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="null" lang="null">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /><title>AuthPolicy xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/apache/commons/httpclient/auth/AuthPolicy.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <em class="comment">/*</em>
<a name="2" href="#2">2</a>   <em class="comment"> * $Header: /home/jerenkrantz/tmp/commons/commons-convert/cvs/home/cvs/jakarta-commons//httpclient/src/java/org/apache/commons/httpclient/auth/AuthPolicy.java,v 1.6 2004/05/13 04:02:00 mbecke Exp $</em>
<a name="3" href="#3">3</a>   <em class="comment"> * $Revision: 480424 $</em>
<a name="4" href="#4">4</a>   <em class="comment"> * $Date: 2006-11-29 06:56:49 +0100 (Wed, 29 Nov 2006) $</em>
<a name="5" href="#5">5</a>   <em class="comment"> *</em>
<a name="6" href="#6">6</a>   <em class="comment"> * ====================================================================</em>
<a name="7" href="#7">7</a>   <em class="comment"> *</em>
<a name="8" href="#8">8</a>   <em class="comment"> *  Licensed to the Apache Software Foundation (ASF) under one or more</em>
<a name="9" href="#9">9</a>   <em class="comment"> *  contributor license agreements.  See the NOTICE file distributed with</em>
<a name="10" href="#10">10</a>  <em class="comment"> *  this work for additional information regarding copyright ownership.</em>
<a name="11" href="#11">11</a>  <em class="comment"> *  The ASF licenses this file to You under the Apache License, Version 2.0</em>
<a name="12" href="#12">12</a>  <em class="comment"> *  (the "License"); you may not use this file except in compliance with</em>
<a name="13" href="#13">13</a>  <em class="comment"> *  the License.  You may obtain a copy of the License at</em>
<a name="14" href="#14">14</a>  <em class="comment"> *</em>
<a name="15" href="#15">15</a>  <em class="comment"> *      <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="16" href="#16">16</a>  <em class="comment"> *</em>
<a name="17" href="#17">17</a>  <em class="comment"> *  Unless required by applicable law or agreed to in writing, software</em>
<a name="18" href="#18">18</a>  <em class="comment"> *  distributed under the License is distributed on an "AS IS" BASIS,</em>
<a name="19" href="#19">19</a>  <em class="comment"> *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
<a name="20" href="#20">20</a>  <em class="comment"> *  See the License for the specific language governing permissions and</em>
<a name="21" href="#21">21</a>  <em class="comment"> *  limitations under the License.</em>
<a name="22" href="#22">22</a>  <em class="comment"> * ====================================================================</em>
<a name="23" href="#23">23</a>  <em class="comment"> *</em>
<a name="24" href="#24">24</a>  <em class="comment"> * This software consists of voluntary contributions made by many</em>
<a name="25" href="#25">25</a>  <em class="comment"> * individuals on behalf of the Apache Software Foundation.  For more</em>
<a name="26" href="#26">26</a>  <em class="comment"> * information on the Apache Software Foundation, please see</em>
<a name="27" href="#27">27</a>  <em class="comment"> * &lt;<a href="http://www.apache.org/" target="alexandria_uri">http://www.apache.org/</a>>.</em>
<a name="28" href="#28">28</a>  <em class="comment"> *</em>
<a name="29" href="#29">29</a>  <em class="comment"> */</em>
<a name="30" href="#30">30</a>  
<a name="31" href="#31">31</a>  <strong>package</strong> org.apache.commons.httpclient.auth;
<a name="32" href="#32">32</a>  
<a name="33" href="#33">33</a>  <strong>import</strong> java.util.ArrayList;
<a name="34" href="#34">34</a>  <strong>import</strong> java.util.HashMap;
<a name="35" href="#35">35</a>  <strong>import</strong> java.util.List;
<a name="36" href="#36">36</a>  
<a name="37" href="#37">37</a>  <strong>import</strong> org.apache.commons.logging.Log;
<a name="38" href="#38">38</a>  <strong>import</strong> org.apache.commons.logging.LogFactory;
<a name="39" href="#39">39</a>  
<a name="40" href="#40">40</a>  <em>/**</em>
<a name="41" href="#41">41</a>  <em> * Authentication policy class. The Authentication policy provides corresponding</em>
<a name="42" href="#42">42</a>  <em> * authentication scheme interfrace for a given type of authorization challenge. </em>
<a name="43" href="#43">43</a>  <em> * &lt;p>The following specifications are provided:</em>
<a name="44" href="#44">44</a>  <em> *  &lt;ul></em>
<a name="45" href="#45">45</a>  <em> *   &lt;li>&lt;tt>Basic&lt;/tt>: Basic authentication scheme as defined in RFC2617</em>
<a name="46" href="#46">46</a>  <em> *           (considered inherently insecure, but most widely supported)</em>
<a name="47" href="#47">47</a>  <em> *   &lt;li>&lt;tt>Digest&lt;/tt>: Digest authentication scheme as defined in RFC2617</em>
<a name="48" href="#48">48</a>  <em> *   &lt;li>&lt;tt>NTLM&lt;/tt>: The NTLM scheme is a proprietary Microsoft Windows </em>
<a name="49" href="#49">49</a>  <em> *           Authentication protocol (considered to be the most secure among</em>
<a name="50" href="#50">50</a>  <em> *           currently supported authentication schemes)</em>
<a name="51" href="#51">51</a>  <em> *  &lt;/ul></em>
<a name="52" href="#52">52</a>  <em> * </em>
<a name="53" href="#53">53</a>  <em> * @author &lt;a href="<a href="mailto:oleg@ural.ru" target="alexandria_uri">mailto:oleg@ural.ru</a>">Oleg Kalnichevski&lt;/a></em>
<a name="54" href="#54">54</a>  <em> *</em>
<a name="55" href="#55">55</a>  <em> * @version $Revision: 480424 $</em>
<a name="56" href="#56">56</a>  <em> * @since 3.0</em>
<a name="57" href="#57">57</a>  <em> */</em>
<a name="58" href="#58">58</a>  <strong>public</strong> <strong>abstract</strong> <strong>class</strong> <a href="../../../../../org/apache/commons/httpclient/auth/AuthPolicy.html">AuthPolicy</a> {
<a name="59" href="#59">59</a>  
<a name="60" href="#60">60</a>      <strong>private</strong> <strong>static</strong> <strong>final</strong> HashMap   SCHEMES     = <strong>new</strong> HashMap();
<a name="61" href="#61">61</a>      <strong>private</strong> <strong>static</strong> <strong>final</strong> ArrayList SCHEME_LIST = <strong>new</strong> ArrayList();
<a name="62" href="#62">62</a>      
<a name="63" href="#63">63</a>      <em>/**</em>
<a name="64" href="#64">64</a>  <em>     * The key used to look up the list of IDs of supported {@link AuthScheme </em>
<a name="65" href="#65">65</a>  <em>     * authentication schemes} in their order of preference. The scheme IDs are </em>
<a name="66" href="#66">66</a>  <em>     * stored in a {@link java.util.Collection} as {@link java.lang.String}s. </em>
<a name="67" href="#67">67</a>  <em>     * </em>
<a name="68" href="#68">68</a>  <em>     * &lt;p></em>
<a name="69" href="#69">69</a>  <em>     * If several schemes are returned in the &lt;tt>WWW-Authenticate&lt;/tt> </em>
<a name="70" href="#70">70</a>  <em>     * or &lt;tt>Proxy-Authenticate&lt;/tt> header, this parameter defines which</em>
<a name="71" href="#71">71</a>  <em>     * {@link AuthScheme authentication schemes} takes precedence over others.</em>
<a name="72" href="#72">72</a>  <em>     * The first item in the collection represents the most preferred </em>
<a name="73" href="#73">73</a>  <em>     * {@link AuthScheme authentication scheme}, the last item represents the ID </em>
<a name="74" href="#74">74</a>  <em>     * of the least preferred one.</em>
<a name="75" href="#75">75</a>  <em>     * &lt;/p></em>
<a name="76" href="#76">76</a>  <em>     * </em>
<a name="77" href="#77">77</a>  <em>     * @see org.apache.commons.httpclient.params.DefaultHttpParams</em>
<a name="78" href="#78">78</a>  <em>     */</em>
<a name="79" href="#79">79</a>      <strong>public</strong> <strong>static</strong> <strong>final</strong> String AUTH_SCHEME_PRIORITY = <span class="string">"http.auth.scheme-priority"</span>;
<a name="80" href="#80">80</a>  
<a name="81" href="#81">81</a>      <em>/**</em>
<a name="82" href="#82">82</a>  <em>     * The NTLM scheme is a proprietary Microsoft Windows Authentication </em>
<a name="83" href="#83">83</a>  <em>     * protocol (considered to be the most secure among currently supported </em>
<a name="84" href="#84">84</a>  <em>     * authentication schemes).</em>
<a name="85" href="#85">85</a>  <em>     */</em>
<a name="86" href="#86">86</a>      <strong>public</strong> <strong>static</strong> <strong>final</strong> String <a href="../../../../../org/apache/commons/httpclient/auth/NTLM.html">NTLM</a> = <span class="string">"NTLM"</span>;
<a name="87" href="#87">87</a>      
<a name="88" href="#88">88</a>      <em>/**</em><em> </em>
<a name="89" href="#89">89</a>  <em>     * Digest authentication scheme as defined in RFC2617.</em>
<a name="90" href="#90">90</a>  <em>     */</em>
<a name="91" href="#91">91</a>      <strong>public</strong> <strong>static</strong> <strong>final</strong> String DIGEST = <span class="string">"Digest"</span>;
<a name="92" href="#92">92</a>  
<a name="93" href="#93">93</a>      <em>/**</em><em> </em>
<a name="94" href="#94">94</a>  <em>     * Basic authentication scheme as defined in RFC2617 (considered inherently</em>
<a name="95" href="#95">95</a>  <em>     * insecure, but most widely supported)</em>
<a name="96" href="#96">96</a>  <em>     */</em>
<a name="97" href="#97">97</a>      <strong>public</strong> <strong>static</strong> <strong>final</strong> String BASIC = <span class="string">"Basic"</span>;
<a name="98" href="#98">98</a>      
<a name="99" href="#99">99</a>      <strong>static</strong> {
<a name="100" href="#100">100</a>         AuthPolicy.registerAuthScheme(NTLM,   NTLMScheme.<strong>class</strong>);
<a name="101" href="#101">101</a>         AuthPolicy.registerAuthScheme(DIGEST, DigestScheme.<strong>class</strong>);
<a name="102" href="#102">102</a>         AuthPolicy.registerAuthScheme(BASIC,  BasicScheme.<strong>class</strong>);
<a name="103" href="#103">103</a>     }
<a name="104" href="#104">104</a>     
<a name="105" href="#105">105</a>     <em>/**</em><em> Log object. */</em>
<a name="106" href="#106">106</a>     <strong>protected</strong> <strong>static</strong> <strong>final</strong> Log LOG = LogFactory.getLog(AuthPolicy.<strong>class</strong>);
<a name="107" href="#107">107</a> 
<a name="108" href="#108">108</a>     <em>/**</em>
<a name="109" href="#109">109</a> <em>     * Registers a class implementing an {@link AuthScheme authentication scheme} with </em>
<a name="110" href="#110">110</a> <em>     * the given identifier. If a class with the given ID already exists it will be overridden.  </em>
<a name="111" href="#111">111</a> <em>     * This ID is the same one used to retrieve the {@link AuthScheme authentication scheme} </em>
<a name="112" href="#112">112</a> <em>     * from {@link #getAuthScheme(String)}.</em>
<a name="113" href="#113">113</a> <em>     * </em>
<a name="114" href="#114">114</a> <em>     * &lt;p></em>
<a name="115" href="#115">115</a> <em>     * Please note that custom authentication preferences, if used, need to be updated accordingly </em>
<a name="116" href="#116">116</a> <em>     * for the new {@link AuthScheme authentication scheme} to take effect.</em>
<a name="117" href="#117">117</a> <em>     * &lt;/p>    </em>
<a name="118" href="#118">118</a> <em>     * </em>
<a name="119" href="#119">119</a> <em>     * @param id the identifier for this scheme</em>
<a name="120" href="#120">120</a> <em>     * @param clazz the class to register</em>
<a name="121" href="#121">121</a> <em>     * </em>
<a name="122" href="#122">122</a> <em>     * @see #getAuthScheme(String)</em>
<a name="123" href="#123">123</a> <em>     * @see #AUTH_SCHEME_PRIORITY</em>
<a name="124" href="#124">124</a> <em>     */</em>
<a name="125" href="#125">125</a>     <strong>public</strong> <strong>static</strong> <strong>synchronized</strong> <strong>void</strong> registerAuthScheme(<strong>final</strong> String id, Class clazz) {
<a name="126" href="#126">126</a>          <strong>if</strong> (id == <strong>null</strong>) {
<a name="127" href="#127">127</a>              <strong>throw</strong> <strong>new</strong> IllegalArgumentException(<span class="string">"Id may not be null"</span>);
<a name="128" href="#128">128</a>          }
<a name="129" href="#129">129</a>         <strong>if</strong> (clazz == <strong>null</strong>) {
<a name="130" href="#130">130</a>             <strong>throw</strong> <strong>new</strong> IllegalArgumentException(<span class="string">"Authentication scheme class may not be null"</span>);
<a name="131" href="#131">131</a>         }
<a name="132" href="#132">132</a>         SCHEMES.put(id.toLowerCase(), clazz);
<a name="133" href="#133">133</a>         SCHEME_LIST.add(id.toLowerCase());
<a name="134" href="#134">134</a>     }
<a name="135" href="#135">135</a> 
<a name="136" href="#136">136</a>     <em>/**</em>
<a name="137" href="#137">137</a> <em>     * Unregisters the class implementing an {@link AuthScheme authentication scheme} with </em>
<a name="138" href="#138">138</a> <em>     * the given ID.</em>
<a name="139" href="#139">139</a> <em>     * </em>
<a name="140" href="#140">140</a> <em>     * @param id the ID of the class to unregister</em>
<a name="141" href="#141">141</a> <em>     */</em>
<a name="142" href="#142">142</a>     <strong>public</strong> <strong>static</strong> <strong>synchronized</strong> <strong>void</strong> unregisterAuthScheme(<strong>final</strong> String id) {
<a name="143" href="#143">143</a>          <strong>if</strong> (id == <strong>null</strong>) {
<a name="144" href="#144">144</a>              <strong>throw</strong> <strong>new</strong> IllegalArgumentException(<span class="string">"Id may not be null"</span>);
<a name="145" href="#145">145</a>          }
<a name="146" href="#146">146</a>         SCHEMES.remove(id.toLowerCase());
<a name="147" href="#147">147</a>         SCHEME_LIST.remove(id.toLowerCase());
<a name="148" href="#148">148</a>     }
<a name="149" href="#149">149</a> 
<a name="150" href="#150">150</a>     <em>/**</em>
<a name="151" href="#151">151</a> <em>     * Gets the {@link AuthScheme authentication scheme} with the given ID.</em>
<a name="152" href="#152">152</a> <em>     * </em>
<a name="153" href="#153">153</a> <em>     * @param id the {@link AuthScheme authentication scheme} ID</em>
<a name="154" href="#154">154</a> <em>     * </em>
<a name="155" href="#155">155</a> <em>     * @return {@link AuthScheme authentication scheme}</em>
<a name="156" href="#156">156</a> <em>     * </em>
<a name="157" href="#157">157</a> <em>     * @throws IllegalStateException if a scheme with the ID cannot be found</em>
<a name="158" href="#158">158</a> <em>     */</em>
<a name="159" href="#159">159</a>     <strong>public</strong> <strong>static</strong> <strong>synchronized</strong> <a href="../../../../../org/apache/commons/httpclient/auth/AuthScheme.html">AuthScheme</a> getAuthScheme(<strong>final</strong> String id) 
<a name="160" href="#160">160</a>         throws IllegalStateException {
<a name="161" href="#161">161</a> 
<a name="162" href="#162">162</a>         <strong>if</strong> (id == <strong>null</strong>) {
<a name="163" href="#163">163</a>             <strong>throw</strong> <strong>new</strong> IllegalArgumentException(<span class="string">"Id may not be null"</span>);
<a name="164" href="#164">164</a>         }
<a name="165" href="#165">165</a>         Class clazz = (Class)SCHEMES.get(id.toLowerCase());
<a name="166" href="#166">166</a>         <strong>if</strong> (clazz != <strong>null</strong>) {
<a name="167" href="#167">167</a>             <strong>try</strong> {
<a name="168" href="#168">168</a>                 <strong>return</strong> (AuthScheme)clazz.newInstance();
<a name="169" href="#169">169</a>             } <strong>catch</strong> (Exception e) {
<a name="170" href="#170">170</a>                 LOG.error(<span class="string">"Error initializing authentication scheme: "</span> + id, e);
<a name="171" href="#171">171</a>                 <strong>throw</strong> <strong>new</strong> IllegalStateException(id + 
<a name="172" href="#172">172</a>                     <span class="string">" authentication scheme implemented by "</span> +
<a name="173" href="#173">173</a>                     clazz.getName() + <span class="string">" could not be initialized"</span>);
<a name="174" href="#174">174</a>             }
<a name="175" href="#175">175</a>         } <strong>else</strong> {
<a name="176" href="#176">176</a>             <strong>throw</strong> <strong>new</strong> IllegalStateException(<span class="string">"Unsupported authentication scheme "</span> + id);
<a name="177" href="#177">177</a>         }
<a name="178" href="#178">178</a>     } 
<a name="179" href="#179">179</a> 
<a name="180" href="#180">180</a>     <em>/**</em>
<a name="181" href="#181">181</a> <em>     * Returns a list containing all registered {@link AuthScheme authentication </em>
<a name="182" href="#182">182</a> <em>     * schemes} in their default order.</em>
<a name="183" href="#183">183</a> <em>     * </em>
<a name="184" href="#184">184</a> <em>     * @return {@link AuthScheme authentication scheme}</em>
<a name="185" href="#185">185</a> <em>     */</em>
<a name="186" href="#186">186</a>     <strong>public</strong> <strong>static</strong> <strong>synchronized</strong> List getDefaultAuthPrefs() {
<a name="187" href="#187">187</a>         <strong>return</strong> (List)SCHEME_LIST.clone(); 
<a name="188" href="#188">188</a>     } 
<a name="189" href="#189">189</a> }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>