<!DOCTYPE HTML>
<html lang="fr">
<head>
<title>Source code</title>
<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
</head>
<body>
<main role="main">
<div class="sourceContainer">
<pre><span class="sourceLineNo">001</span><a id="line.1">/*</a>
<span class="sourceLineNo">002</span><a id="line.2"> * Licensed to the Apache Software Foundation (ASF) under one</a>
<span class="sourceLineNo">003</span><a id="line.3"> * or more contributor license agreements.  See the NOTICE file</a>
<span class="sourceLineNo">004</span><a id="line.4"> * distributed with this work for additional information</a>
<span class="sourceLineNo">005</span><a id="line.5"> * regarding copyright ownership.  The ASF licenses this file</a>
<span class="sourceLineNo">006</span><a id="line.6"> * to you under the Apache License, Version 2.0 (the</a>
<span class="sourceLineNo">007</span><a id="line.7"> * "License"); you may not use this file except in compliance</a>
<span class="sourceLineNo">008</span><a id="line.8"> * with the License.  You may obtain a copy of the License at</a>
<span class="sourceLineNo">009</span><a id="line.9"> *</a>
<span class="sourceLineNo">010</span><a id="line.10"> *     http://www.apache.org/licenses/LICENSE-2.0</a>
<span class="sourceLineNo">011</span><a id="line.11"> *</a>
<span class="sourceLineNo">012</span><a id="line.12"> * Unless required by applicable law or agreed to in writing,</a>
<span class="sourceLineNo">013</span><a id="line.13"> * software distributed under the License is distributed on an</a>
<span class="sourceLineNo">014</span><a id="line.14"> * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY</a>
<span class="sourceLineNo">015</span><a id="line.15"> * KIND, either express or implied.  See the License for the</a>
<span class="sourceLineNo">016</span><a id="line.16"> * specific language governing permissions and limitations</a>
<span class="sourceLineNo">017</span><a id="line.17"> * under the License.</a>
<span class="sourceLineNo">018</span><a id="line.18"> */</a>
<span class="sourceLineNo">019</span><a id="line.19">package org.apache.shiro.subject;</a>
<span class="sourceLineNo">020</span><a id="line.20"></a>
<span class="sourceLineNo">021</span><a id="line.21">import org.apache.shiro.authc.AuthenticationInfo;</a>
<span class="sourceLineNo">022</span><a id="line.22">import org.apache.shiro.authc.AuthenticationToken;</a>
<span class="sourceLineNo">023</span><a id="line.23">import org.apache.shiro.mgt.SecurityManager;</a>
<span class="sourceLineNo">024</span><a id="line.24">import org.apache.shiro.session.Session;</a>
<span class="sourceLineNo">025</span><a id="line.25"></a>
<span class="sourceLineNo">026</span><a id="line.26">import java.io.Serializable;</a>
<span class="sourceLineNo">027</span><a id="line.27">import java.util.Map;</a>
<span class="sourceLineNo">028</span><a id="line.28"></a>
<span class="sourceLineNo">029</span><a id="line.29">/**</a>
<span class="sourceLineNo">030</span><a id="line.30"> * A {@code SubjectContext} is a 'bucket' of data presented to a {@link SecurityManager} which interprets</a>
<span class="sourceLineNo">031</span><a id="line.31"> * this data to construct {@link org.apache.shiro.subject.Subject Subject} instances.  It is essentially a Map of data</a>
<span class="sourceLineNo">032</span><a id="line.32"> * with a few additional type-safe methods for easy retrieval of objects commonly used to construct Subject instances.</a>
<span class="sourceLineNo">033</span><a id="line.33"> * &lt;p/&gt;</a>
<span class="sourceLineNo">034</span><a id="line.34"> * While this interface contains type-safe setters and getters for common data types, the map can contain anything</a>
<span class="sourceLineNo">035</span><a id="line.35"> * additional that might be needed by the {@link SecurityManager} or</a>
<span class="sourceLineNo">036</span><a id="line.36"> * {@link org.apache.shiro.mgt.SubjectFactory SubjectFactory} implementation to construct {@code Subject} instances.</a>
<span class="sourceLineNo">037</span><a id="line.37"> * &lt;h2&gt;Data Resolution&lt;/h2&gt;</a>
<span class="sourceLineNo">038</span><a id="line.38"> * The {@link SubjectContext} interface also allows for heuristic resolution of data used to construct a subject</a>
<span class="sourceLineNo">039</span><a id="line.39"> * instance.  That is, if an attribute has not been explicitly provided via a setter method, the {@code resolve*}</a>
<span class="sourceLineNo">040</span><a id="line.40"> * methods can use heuristics to obtain that data in another way from other attributes.</a>
<span class="sourceLineNo">041</span><a id="line.41"> * &lt;p/&gt;</a>
<span class="sourceLineNo">042</span><a id="line.42"> * For example, if one calls {@link #getPrincipals()} and no principals are returned, perhaps the principals exist</a>
<span class="sourceLineNo">043</span><a id="line.43"> * in the {@link #getSession() session} or another attribute in the context.  The {@link #resolvePrincipals()} will know</a>
<span class="sourceLineNo">044</span><a id="line.44"> * how to resolve the principals based on heuristics.  If the {@code resolve*} methods return {@code null} then the</a>
<span class="sourceLineNo">045</span><a id="line.45"> * data could not be achieved by any heuristics and must be considered as not available in the context.</a>
<span class="sourceLineNo">046</span><a id="line.46"> * &lt;p/&gt;</a>
<span class="sourceLineNo">047</span><a id="line.47"> * The general idea is that the normal getters can be called to see if the value was explicitly set.  The</a>
<span class="sourceLineNo">048</span><a id="line.48"> * {@code resolve*} methods should be used when actually constructing the {@code Subject} instance to ensure the most</a>
<span class="sourceLineNo">049</span><a id="line.49"> * specific/accurate data can be used.</a>
<span class="sourceLineNo">050</span><a id="line.50"> * &lt;p/&gt;</a>
<span class="sourceLineNo">051</span><a id="line.51"> * &lt;b&gt;USAGE&lt;/b&gt;: Most Shiro end-users will never use a {@code SubjectContext} instance directly and instead will use a</a>
<span class="sourceLineNo">052</span><a id="line.52"> * {@link Subject.Builder} (which internally uses a {@code SubjectContext}) and build {@code Subject} instances that</a>
<span class="sourceLineNo">053</span><a id="line.53"> * way.</a>
<span class="sourceLineNo">054</span><a id="line.54"> *</a>
<span class="sourceLineNo">055</span><a id="line.55"> * @see org.apache.shiro.mgt.SecurityManager#createSubject SecurityManager.createSubject</a>
<span class="sourceLineNo">056</span><a id="line.56"> * @see org.apache.shiro.mgt.SubjectFactory SubjectFactory</a>
<span class="sourceLineNo">057</span><a id="line.57"> * @since 1.0</a>
<span class="sourceLineNo">058</span><a id="line.58"> */</a>
<span class="sourceLineNo">059</span><a id="line.59">public interface SubjectContext extends Map&lt;String, Object&gt; {</a>
<span class="sourceLineNo">060</span><a id="line.60"></a>
<span class="sourceLineNo">061</span><a id="line.61">    /**</a>
<span class="sourceLineNo">062</span><a id="line.62">     * Returns the SecurityManager instance that should be used to back the constructed {@link Subject} instance or</a>
<span class="sourceLineNo">063</span><a id="line.63">     * {@code null} if one has not yet been provided to this context.</a>
<span class="sourceLineNo">064</span><a id="line.64">     *</a>
<span class="sourceLineNo">065</span><a id="line.65">     * @return the SecurityManager instance that should be used to back the constructed {@link Subject} instance or</a>
<span class="sourceLineNo">066</span><a id="line.66">     *         {@code null} if one has not yet been provided to this context.</a>
<span class="sourceLineNo">067</span><a id="line.67">     */</a>
<span class="sourceLineNo">068</span><a id="line.68">    SecurityManager getSecurityManager();</a>
<span class="sourceLineNo">069</span><a id="line.69"></a>
<span class="sourceLineNo">070</span><a id="line.70">    /**</a>
<span class="sourceLineNo">071</span><a id="line.71">     * Sets the SecurityManager instance that should be used to back the constructed {@link Subject} instance</a>
<span class="sourceLineNo">072</span><a id="line.72">     * (typically used to support {@link org.apache.shiro.subject.support.DelegatingSubject DelegatingSubject} implementations).</a>
<span class="sourceLineNo">073</span><a id="line.73">     *</a>
<span class="sourceLineNo">074</span><a id="line.74">     * @param securityManager the SecurityManager instance that should be used to back the constructed {@link Subject}</a>
<span class="sourceLineNo">075</span><a id="line.75">     *                        instance.</a>
<span class="sourceLineNo">076</span><a id="line.76">     */</a>
<span class="sourceLineNo">077</span><a id="line.77">    void setSecurityManager(SecurityManager securityManager);</a>
<span class="sourceLineNo">078</span><a id="line.78"></a>
<span class="sourceLineNo">079</span><a id="line.79">    /**</a>
<span class="sourceLineNo">080</span><a id="line.80">     * Resolves the {@code SecurityManager} instance that should be used to back the constructed {@link Subject}</a>
<span class="sourceLineNo">081</span><a id="line.81">     * instance (typically used to support {@link org.apache.shiro.subject.support.DelegatingSubject DelegatingSubject} implementations).</a>
<span class="sourceLineNo">082</span><a id="line.82">     *</a>
<span class="sourceLineNo">083</span><a id="line.83">     * @return the {@code SecurityManager} instance that should be used to back the constructed {@link Subject}</a>
<span class="sourceLineNo">084</span><a id="line.84">     *         instance</a>
<span class="sourceLineNo">085</span><a id="line.85">     */</a>
<span class="sourceLineNo">086</span><a id="line.86">    SecurityManager resolveSecurityManager();</a>
<span class="sourceLineNo">087</span><a id="line.87"></a>
<span class="sourceLineNo">088</span><a id="line.88">    /**</a>
<span class="sourceLineNo">089</span><a id="line.89">     * Returns the session id of the session that should be associated with the constructed {@link Subject} instance.</a>
<span class="sourceLineNo">090</span><a id="line.90">     * &lt;p/&gt;</a>
<span class="sourceLineNo">091</span><a id="line.91">     * The construction process is expected to resolve the session with the specified id and then construct the Subject</a>
<span class="sourceLineNo">092</span><a id="line.92">     * instance based on the resolved session.</a>
<span class="sourceLineNo">093</span><a id="line.93">     *</a>
<span class="sourceLineNo">094</span><a id="line.94">     * @return the session id of the session that should be associated with the constructed {@link Subject} instance.</a>
<span class="sourceLineNo">095</span><a id="line.95">     */</a>
<span class="sourceLineNo">096</span><a id="line.96">    Serializable getSessionId();</a>
<span class="sourceLineNo">097</span><a id="line.97"></a>
<span class="sourceLineNo">098</span><a id="line.98">    /**</a>
<span class="sourceLineNo">099</span><a id="line.99">     * Sets the session id of the session that should be associated with the constructed {@link Subject} instance.</a>
<span class="sourceLineNo">100</span><a id="line.100">     * &lt;p/&gt;</a>
<span class="sourceLineNo">101</span><a id="line.101">     * The construction process is expected to resolve the session with the specified id and then construct the Subject</a>
<span class="sourceLineNo">102</span><a id="line.102">     * instance based on the resolved session.</a>
<span class="sourceLineNo">103</span><a id="line.103">     *</a>
<span class="sourceLineNo">104</span><a id="line.104">     * @param sessionId the session id of the session that should be associated with the constructed {@link Subject}</a>
<span class="sourceLineNo">105</span><a id="line.105">     *                  instance.</a>
<span class="sourceLineNo">106</span><a id="line.106">     */</a>
<span class="sourceLineNo">107</span><a id="line.107">    void setSessionId(Serializable sessionId);</a>
<span class="sourceLineNo">108</span><a id="line.108"></a>
<span class="sourceLineNo">109</span><a id="line.109">    /**</a>
<span class="sourceLineNo">110</span><a id="line.110">     * Returns any existing {@code Subject} that may be in use at the time the new {@code Subject} instance is</a>
<span class="sourceLineNo">111</span><a id="line.111">     * being created.</a>
<span class="sourceLineNo">112</span><a id="line.112">     * &lt;p/&gt;</a>
<span class="sourceLineNo">113</span><a id="line.113">     * This is typically used in the case where the existing {@code Subject} instance returned by</a>
<span class="sourceLineNo">114</span><a id="line.114">     * this method is unauthenticated and a new {@code Subject} instance is being created to reflect a successful</a>
<span class="sourceLineNo">115</span><a id="line.115">     * authentication - you want to return most of the state of the previous {@code Subject} instance when creating the</a>
<span class="sourceLineNo">116</span><a id="line.116">     * newly authenticated instance.</a>
<span class="sourceLineNo">117</span><a id="line.117">     *</a>
<span class="sourceLineNo">118</span><a id="line.118">     * @return any existing {@code Subject} that may be in use at the time the new {@code Subject} instance is</a>
<span class="sourceLineNo">119</span><a id="line.119">     *         being created.</a>
<span class="sourceLineNo">120</span><a id="line.120">     */</a>
<span class="sourceLineNo">121</span><a id="line.121">    Subject getSubject();</a>
<span class="sourceLineNo">122</span><a id="line.122"></a>
<span class="sourceLineNo">123</span><a id="line.123">    /**</a>
<span class="sourceLineNo">124</span><a id="line.124">     * Sets the existing {@code Subject} that may be in use at the time the new {@code Subject} instance is</a>
<span class="sourceLineNo">125</span><a id="line.125">     * being created.</a>
<span class="sourceLineNo">126</span><a id="line.126">     * &lt;p/&gt;</a>
<span class="sourceLineNo">127</span><a id="line.127">     * This is typically used in the case where the existing {@code Subject} instance returned by</a>
<span class="sourceLineNo">128</span><a id="line.128">     * this method is unauthenticated and a new {@code Subject} instance is being created to reflect a successful</a>
<span class="sourceLineNo">129</span><a id="line.129">     * authentication - you want to return most of the state of the previous {@code Subject} instance when creating the</a>
<span class="sourceLineNo">130</span><a id="line.130">     * newly authenticated instance.</a>
<span class="sourceLineNo">131</span><a id="line.131">     *</a>
<span class="sourceLineNo">132</span><a id="line.132">     * @param subject the existing {@code Subject} that may be in use at the time the new {@code Subject} instance is</a>
<span class="sourceLineNo">133</span><a id="line.133">     *                being created.</a>
<span class="sourceLineNo">134</span><a id="line.134">     */</a>
<span class="sourceLineNo">135</span><a id="line.135">    void setSubject(Subject subject);</a>
<span class="sourceLineNo">136</span><a id="line.136"></a>
<span class="sourceLineNo">137</span><a id="line.137">    /**</a>
<span class="sourceLineNo">138</span><a id="line.138">     * Returns the principals (aka identity) that the constructed {@code Subject} should reflect.</a>
<span class="sourceLineNo">139</span><a id="line.139">     *</a>
<span class="sourceLineNo">140</span><a id="line.140">     * @return the principals (aka identity) that the constructed {@code Subject} should reflect.</a>
<span class="sourceLineNo">141</span><a id="line.141">     */</a>
<span class="sourceLineNo">142</span><a id="line.142">    PrincipalCollection getPrincipals();</a>
<span class="sourceLineNo">143</span><a id="line.143"></a>
<span class="sourceLineNo">144</span><a id="line.144">    PrincipalCollection resolvePrincipals();</a>
<span class="sourceLineNo">145</span><a id="line.145"></a>
<span class="sourceLineNo">146</span><a id="line.146">    /**</a>
<span class="sourceLineNo">147</span><a id="line.147">     * Sets the principals (aka identity) that the constructed {@code Subject} should reflect.</a>
<span class="sourceLineNo">148</span><a id="line.148">     *</a>
<span class="sourceLineNo">149</span><a id="line.149">     * @param principals the principals (aka identity) that the constructed {@code Subject} should reflect.</a>
<span class="sourceLineNo">150</span><a id="line.150">     */</a>
<span class="sourceLineNo">151</span><a id="line.151">    void setPrincipals(PrincipalCollection principals);</a>
<span class="sourceLineNo">152</span><a id="line.152"></a>
<span class="sourceLineNo">153</span><a id="line.153">    /**</a>
<span class="sourceLineNo">154</span><a id="line.154">     * Returns the {@code Session} to use when building the {@code Subject} instance.  Note that it is more</a>
<span class="sourceLineNo">155</span><a id="line.155">     * common to specify a {@link #setSessionId sessionId} to acquire the desired session rather than having to</a>
<span class="sourceLineNo">156</span><a id="line.156">     * construct a {@code Session} to be returned by this method.</a>
<span class="sourceLineNo">157</span><a id="line.157">     *</a>
<span class="sourceLineNo">158</span><a id="line.158">     * @return the {@code Session} to use when building the {@code Subject} instance.</a>
<span class="sourceLineNo">159</span><a id="line.159">     */</a>
<span class="sourceLineNo">160</span><a id="line.160">    Session getSession();</a>
<span class="sourceLineNo">161</span><a id="line.161"></a>
<span class="sourceLineNo">162</span><a id="line.162">    /**</a>
<span class="sourceLineNo">163</span><a id="line.163">     * Sets the {@code Session} to use when building the {@code Subject} instance.  Note that it is more</a>
<span class="sourceLineNo">164</span><a id="line.164">     * common to specify a {@link #setSessionId sessionId} to automatically resolve the desired session rather than</a>
<span class="sourceLineNo">165</span><a id="line.165">     * constructing a {@code Session} to call this method.</a>
<span class="sourceLineNo">166</span><a id="line.166">     *</a>
<span class="sourceLineNo">167</span><a id="line.167">     * @param session the {@code Session} to use when building the {@code Subject} instance.</a>
<span class="sourceLineNo">168</span><a id="line.168">     */</a>
<span class="sourceLineNo">169</span><a id="line.169">    void setSession(Session session);</a>
<span class="sourceLineNo">170</span><a id="line.170"></a>
<span class="sourceLineNo">171</span><a id="line.171">    Session resolveSession();</a>
<span class="sourceLineNo">172</span><a id="line.172"></a>
<span class="sourceLineNo">173</span><a id="line.173">    /**</a>
<span class="sourceLineNo">174</span><a id="line.174">     * Returns {@code true} if the constructed {@code Subject} should be considered authenticated, {@code false}</a>
<span class="sourceLineNo">175</span><a id="line.175">     * otherwise.  Be careful setting this value to {@code true} - you should know what you are doing and have a good</a>
<span class="sourceLineNo">176</span><a id="line.176">     * reason for ignoring Shiro's default authentication state mechanisms.</a>
<span class="sourceLineNo">177</span><a id="line.177">     *</a>
<span class="sourceLineNo">178</span><a id="line.178">     * @return {@code true} if the constructed {@code Subject} should be considered authenticated, {@code false}</a>
<span class="sourceLineNo">179</span><a id="line.179">     *         otherwise.</a>
<span class="sourceLineNo">180</span><a id="line.180">     */</a>
<span class="sourceLineNo">181</span><a id="line.181">    boolean isAuthenticated();</a>
<span class="sourceLineNo">182</span><a id="line.182"></a>
<span class="sourceLineNo">183</span><a id="line.183">    /**</a>
<span class="sourceLineNo">184</span><a id="line.184">     * Sets whether or not the constructed {@code Subject} instance should be considered as authenticated.  Be careful</a>
<span class="sourceLineNo">185</span><a id="line.185">     * when specifying {@code true} - you should know what you are doing and have a good reason for ignoring Shiro's</a>
<span class="sourceLineNo">186</span><a id="line.186">     * default authentication state mechanisms.</a>
<span class="sourceLineNo">187</span><a id="line.187">     *</a>
<span class="sourceLineNo">188</span><a id="line.188">     * @param authc whether or not the constructed {@code Subject} instance should be considered as authenticated.</a>
<span class="sourceLineNo">189</span><a id="line.189">     */</a>
<span class="sourceLineNo">190</span><a id="line.190">    void setAuthenticated(boolean authc);</a>
<span class="sourceLineNo">191</span><a id="line.191"></a>
<span class="sourceLineNo">192</span><a id="line.192">    /**</a>
<span class="sourceLineNo">193</span><a id="line.193">     * Returns {@code true} if the constructed {@code Subject} should be allowed to create a session, {@code false}</a>
<span class="sourceLineNo">194</span><a id="line.194">     * otherwise.  Shiro's configuration defaults to {@code true} as most applications find value in Sessions.</a>
<span class="sourceLineNo">195</span><a id="line.195">     *</a>
<span class="sourceLineNo">196</span><a id="line.196">     * @return {@code true} if the constructed {@code Subject} should be allowed to create sessions, {@code false}</a>
<span class="sourceLineNo">197</span><a id="line.197">     * otherwise.</a>
<span class="sourceLineNo">198</span><a id="line.198">     * @since 1.2</a>
<span class="sourceLineNo">199</span><a id="line.199">     */</a>
<span class="sourceLineNo">200</span><a id="line.200">    boolean isSessionCreationEnabled();</a>
<span class="sourceLineNo">201</span><a id="line.201"></a>
<span class="sourceLineNo">202</span><a id="line.202">    /**</a>
<span class="sourceLineNo">203</span><a id="line.203">     * Sets whether or not the constructed {@code Subject} instance should be allowed to create a session,</a>
<span class="sourceLineNo">204</span><a id="line.204">     * {@code false} otherwise.</a>
<span class="sourceLineNo">205</span><a id="line.205">     *</a>
<span class="sourceLineNo">206</span><a id="line.206">     * @param enabled whether or not the constructed {@code Subject} instance should be allowed to create a session,</a>
<span class="sourceLineNo">207</span><a id="line.207">     * {@code false} otherwise.</a>
<span class="sourceLineNo">208</span><a id="line.208">     * @since 1.2</a>
<span class="sourceLineNo">209</span><a id="line.209">     */</a>
<span class="sourceLineNo">210</span><a id="line.210">    void setSessionCreationEnabled(boolean enabled);</a>
<span class="sourceLineNo">211</span><a id="line.211"></a>
<span class="sourceLineNo">212</span><a id="line.212">    boolean resolveAuthenticated();</a>
<span class="sourceLineNo">213</span><a id="line.213"></a>
<span class="sourceLineNo">214</span><a id="line.214">    AuthenticationInfo getAuthenticationInfo();</a>
<span class="sourceLineNo">215</span><a id="line.215"></a>
<span class="sourceLineNo">216</span><a id="line.216">    void setAuthenticationInfo(AuthenticationInfo info);</a>
<span class="sourceLineNo">217</span><a id="line.217"></a>
<span class="sourceLineNo">218</span><a id="line.218">    AuthenticationToken getAuthenticationToken();</a>
<span class="sourceLineNo">219</span><a id="line.219"></a>
<span class="sourceLineNo">220</span><a id="line.220">    void setAuthenticationToken(AuthenticationToken token);</a>
<span class="sourceLineNo">221</span><a id="line.221"></a>
<span class="sourceLineNo">222</span><a id="line.222">    /**</a>
<span class="sourceLineNo">223</span><a id="line.223">     * Returns the host name or IP that should reflect the constructed {@code Subject}'s originating location.</a>
<span class="sourceLineNo">224</span><a id="line.224">     *</a>
<span class="sourceLineNo">225</span><a id="line.225">     * @return the host name or IP that should reflect the constructed {@code Subject}'s originating location.</a>
<span class="sourceLineNo">226</span><a id="line.226">     */</a>
<span class="sourceLineNo">227</span><a id="line.227">    String getHost();</a>
<span class="sourceLineNo">228</span><a id="line.228"></a>
<span class="sourceLineNo">229</span><a id="line.229">    /**</a>
<span class="sourceLineNo">230</span><a id="line.230">     * Sets the host name or IP that should reflect the constructed {@code Subject}'s originating location.</a>
<span class="sourceLineNo">231</span><a id="line.231">     *</a>
<span class="sourceLineNo">232</span><a id="line.232">     * @param host the host name or IP that should reflect the constructed {@code Subject}'s originating location.</a>
<span class="sourceLineNo">233</span><a id="line.233">     */</a>
<span class="sourceLineNo">234</span><a id="line.234">    void setHost(String host);</a>
<span class="sourceLineNo">235</span><a id="line.235"></a>
<span class="sourceLineNo">236</span><a id="line.236">    String resolveHost();</a>
<span class="sourceLineNo">237</span><a id="line.237">}</a>




























































</pre>
</div>
</main>
</body>
</html>