|
17 | 17 | package com.authlete.jaxrs.server.api; |
18 | 18 |
|
19 | 19 |
|
| 20 | +import java.util.ArrayList; |
| 21 | +import java.util.Arrays; |
20 | 22 | import java.util.Date; |
| 23 | +import java.util.List; |
21 | 24 | import javax.servlet.http.HttpServletRequest; |
22 | 25 | import javax.servlet.http.HttpSession; |
23 | 26 | import javax.ws.rs.Consumes; |
|
44 | 47 | @Path("/api/authorization/decision") |
45 | 48 | public class AuthorizationDecisionEndpoint extends BaseAuthorizationDecisionEndpoint |
46 | 49 | { |
| 50 | + private static void addTxnToClaimNames(Params params) { |
| 51 | + // txn claim is always required by ConnectID Australia |
| 52 | + // https://cdn.connectid.com.au/specifications/digitalid-identity-assurance-profile-06.html |
| 53 | + String[] claimNames = params.getClaimNames(); |
| 54 | + if (claimNames == null) { |
| 55 | + // if no claims were requested it can't be a connectid au request |
| 56 | + return; |
| 57 | + } |
| 58 | + // txn will now be returned for any requests that request oidc claims - as our AS is multipurpose there's no |
| 59 | + // real good way to identify the ecosystem variant being tested and returning an random uuid is harmless |
| 60 | + ArrayList<String> claimNamesArray = new ArrayList<>(Arrays.asList(claimNames)); |
| 61 | + claimNamesArray.add("txn"); |
| 62 | + |
| 63 | + params.setClaimNames(claimNamesArray.toArray(new String[0])); |
| 64 | + } |
| 65 | + |
47 | 66 | /** |
48 | 67 | * Process a request from the form in the authorization page. |
49 | 68 | * |
@@ -83,6 +102,8 @@ public Response post( |
83 | 102 | User user = ProcessingUtil.getUser(session, parameters); |
84 | 103 | Date authTime = (Date) session.getAttribute("authTime"); |
85 | 104 |
|
| 105 | + addTxnToClaimNames(params); |
| 106 | + |
86 | 107 | // Claims requested to be embedded in the ID token. |
87 | 108 | String idTokenClaims = (params != null) ? params.getIdTokenClaims() : null; |
88 | 109 |
|
|
0 commit comments