|
81 | 81 | <ul>
|
82 | 82 | <li><a href="#auth-basic">basic auth</a></li>
|
83 | 83 | <li><a href="#auth-bearer">bearer token</a></li>
|
| 84 | + <li><a href="#aws-cognito">AWS Cognito</a></li> |
84 | 85 | </ul>
|
85 | 86 | </li>
|
86 | 87 | <li><a href="#logging">Logging</a>
|
@@ -1178,6 +1179,53 @@ <h4>Token will be obtained and set automatically</h4>
|
1178 | 1179 | obtained for the initial request and then renewed when the token has expired.
|
1179 | 1180 | </p>
|
1180 | 1181 |
|
| 1182 | +<h2 id="aws-cognito">AWS Cognito</h2> |
| 1183 | +<p> |
| 1184 | + When using AWS Cognito for JWT Bearer tokens (OAuth2 client credentials flow) we can use |
| 1185 | + the supplied <em>io.avaje.aws:avaje-cognito-client-token</em> component. |
| 1186 | +</p> |
| 1187 | + |
| 1188 | +<h4>Step 1: Add dependency</h4> |
| 1189 | +<div class="syntax xml"><div class="highlight"><pre><span></span><span class="nt"><dependency></span> |
| 1190 | + <span class="nt"><groupId></span>io.avaje.aws<span class="nt"></groupId></span> |
| 1191 | + <span class="nt"><artifactId></span>avaje-cognito-client-token<span class="nt"></artifactId></span> |
| 1192 | + <span class="nt"><version></span>1.0<span class="nt"></version></span> |
| 1193 | +<span class="nt"></dependency></span> |
| 1194 | +</pre></div> |
| 1195 | +</div> |
| 1196 | + |
| 1197 | +<h4>Step 2: Configure the HttpClient</h4> |
| 1198 | +<p> |
| 1199 | + Use <em>CognitoAuthTokenProvider</em> to create an AuthTokenProvider. |
| 1200 | + Configure the HttpClient to use that AuthTokenProvider. |
| 1201 | +</p> |
| 1202 | +<p> |
| 1203 | + This will then automatically obtain access tokens from Cognito when |
| 1204 | + needed based on the access token expiry, and use the access token |
| 1205 | + in the Authorization header as a Bearer token. |
| 1206 | +</p> |
| 1207 | +<div class="syntax java"><div class="highlight"><pre><span></span><span class="c1">// create the Cognito AuthTokenProvider</span> |
| 1208 | +<span class="n">AuthTokenProvider</span> <span class="n">authTokenProvider</span> <span class="o">=</span> <span class="n">CognitoAuthTokenProvider</span><span class="o">.</span><span class="na">builder</span><span class="o">()</span> |
| 1209 | + <span class="o">.</span><span class="na">url</span><span class="o">(</span><span class="n">tokenUrl</span><span class="o">)</span> |
| 1210 | + <span class="o">.</span><span class="na">clientId</span><span class="o">(</span><span class="n">clientId</span><span class="o">)</span> |
| 1211 | + <span class="o">.</span><span class="na">clientSecret</span><span class="o">(</span><span class="n">clientSecret</span><span class="o">)</span> |
| 1212 | + <span class="o">.</span><span class="na">scope</span><span class="o">(</span><span class="n">scope</span><span class="o">)</span> |
| 1213 | + <span class="o">.</span><span class="na">build</span><span class="o">();</span> |
| 1214 | + |
| 1215 | +<span class="c1">// use the authTokenProvider when building the HttpClient</span> |
| 1216 | +<span class="n">HttpClient</span> <span class="n">client</span> <span class="o">=</span> <span class="n">HttpClient</span><span class="o">.</span><span class="na">builder</span><span class="o">()</span> |
| 1217 | + <span class="o">.</span><span class="na">authTokenProvider</span><span class="o">(</span><span class="n">authTokenProvider</span><span class="o">)</span> <span class="c1">// HERE !!</span> |
| 1218 | + <span class="o">.</span><span class="na">bodyAdapter</span><span class="o">(</span><span class="k">new</span> <span class="n">JacksonBodyAdapter</span><span class="o">())</span> |
| 1219 | + <span class="o">.</span><span class="na">retryHandler</span><span class="o">(</span><span class="n">retry</span><span class="o">)</span> |
| 1220 | + <span class="o">.</span><span class="na">baseUrl</span><span class="o">(</span><span class="n">url</span><span class="o">)</span> |
| 1221 | + <span class="o">.</span><span class="na">build</span><span class="o">();</span> |
| 1222 | +</pre></div> |
| 1223 | +</div> |
| 1224 | +<p> |
| 1225 | + Note: the <em>Token URL</em> will typically be in the form: <br/> |
| 1226 | + <em>https://{my-app}.auth.{region}.amazoncognito.com/oauth2/token</em> |
| 1227 | +</p> |
| 1228 | + |
1181 | 1229 |
|
1182 | 1230 | <h2 id="logging">Logging</h2>
|
1183 | 1231 | <p>
|
|
0 commit comments