Author: buildbot
Date: Wed Nov 21 17:48:00 2012
New Revision: 839042

Log:
Production update by buildbot for cxf

Modified:
    websites/production/cxf/content/cache/docs.pageCache
    websites/production/cxf/content/docs/jax-rs-oauth2.html

Modified: websites/production/cxf/content/cache/docs.pageCache
==============================================================================
Binary files - no diff available.

Modified: websites/production/cxf/content/docs/jax-rs-oauth2.html
==============================================================================
--- websites/production/cxf/content/docs/jax-rs-oauth2.html (original)
+++ websites/production/cxf/content/docs/jax-rs-oauth2.html Wed Nov 21 17:48:00 
2012
@@ -815,6 +815,60 @@ how one can access a user login name tha
 
 <p>CXF provides the utility grant beans for all the grants it supports, <a 
shape="rect" class="external-link" 
href="http://svn.apache.org/repos/asf/cxf/trunk/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/grants/code/AuthorizationCodeGrant.java";>AuthorizationCodeGrant</a>,
 <a shape="rect" class="external-link" 
href="http://svn.apache.org/repos/asf/cxf/trunk/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/grants/clientcred/ClientCredentialsGrant.java";>ClientCredentialsGrant</a>,
 <a shape="rect" class="external-link" 
href="http://svn.apache.org/repos/asf/cxf/trunk/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/grants/owner/ResourceOwnerGrant.java";>ResourceOwnerGrant</a>
 and <a shape="rect" class="external-link" 
href="http://svn.apache.org/repos/asf/cxf/trunk/rt/rs/security/oauth-parent/oauth2/src/main/java/org/apache/cxf/rs/security/oauth2/grants/refresh/RefreshTokenGrant
 .java">RefreshTokenGrant</a>. Please use the appropriate grant bean relevant 
to your application when requesting an access token or create a custom 
AccessTokenGrant bean implementation.</p>
 
+<p>For example, consider a case where a client who already owns an authorized 
access token and accessing the end user resource gets HTTP 401 error back and 
the client also owns a refresh token. Here is one possible way to handle it:</p>
+
+<div class="code panel" style="border-width: 1px;"><div class="codeContent 
panelContent">
+<pre class="code-java">
+
+<span class="code-keyword">import</span> javax.ws.rs.NotAuthorizedException;
+<span class="code-keyword">import</span> javax.ws.rs.core.HttpHeaders;
+
+<span class="code-keyword">import</span> 
org.apache.cxf.rs.security.oauth2.client.OAuthClientUtils;
+<span class="code-keyword">import</span> 
org.apache.cxf.rs.security.oauth2.client.OAuthClientUtils.Consumer;
+<span class="code-keyword">import</span> 
org.apache.cxf.rs.security.oauth2.grants.code.AuthorizationCodeGrant;
+<span class="code-keyword">import</span> 
org.apache.cxf.rs.security.oauth2.grants.refresh.RefreshTokenGrant;
+<span class="code-keyword">import</span> 
org.apache.cxf.rs.security.oauth2.common.ClientAccessToken;
+
+
+
+<span class="code-comment">// the pseudo-code <span 
class="code-keyword">for</span> getting the access token
+</span>Consumer consumer = ...
+AuthorizationCodeGrant codeGrant = ...
+
+ClientAccessToken accessToken = OAuthClientUtils.getAccessToken(codeGrant, 
consumer);
+
+WebClient endUserResourceClient = WebClient.create(endUserServerAddress);
+
+endUserResourceClient.header(HttpHeaders.AUTHORIZATION, 
+                             
OAuthClientUtils.createAuthorizationHeader(accessToken));
+<span class="code-keyword">try</span> {
+   <span class="code-keyword">return</span> endUserResourceClient.get();
+} <span class="code-keyword">catch</span> (NotAuthorizedException ex) {
+    <span class="code-object">String</span> refreshToken = 
accessToken.getRefreshToken();
+    <span class="code-keyword">if</span> (refreshToken != <span 
class="code-keyword">null</span>) {
+        <span class="code-comment">// retry once
+</span>
+        <span class="code-comment">// refresh the token
+</span>        accessToken = OAuthClientUtils.getAccessToken(<span 
class="code-keyword">new</span> RefreshTokenGrant(refreshToken), consumer);
+
+        <span class="code-comment">// reset Authorization header
+</span>        endUserResourceClient.replaceHeader(HttpHeaders.AUTHORIZATION, 
+                             
OAuthClientUtils.createAuthorizationHeader(accessToken)); 
+
+        <span class="code-comment">// <span class="code-keyword">try</span> to 
access the end user resource again
+</span>        <span class="code-keyword">return</span> 
endUserResourceClient.get();
+        
+    } <span class="code-keyword">else</span> {
+        <span class="code-keyword">throw</span> ex;
+    }
+
+}
+
+
+
+</pre>
+</div></div>
+
 <h1><a shape="rect" 
name="JAX-RSOAuth2-OAuth2withouttheExplicitAuthorization"></a>OAuth2 without 
the Explicit Authorization</h1>
 
 <p>Client Credentials is one of OAuth2 grants that does not require the 
explicit authorization and is currently supported by CXF.  </p>


Reply via email to