Skip to content

Commit 83ea009

Browse files
authored
Merge pull request #63 from authlete/connectid-txn-claim-always
Add support for mandatory txn claim in Australian ConnectID
2 parents 5a75f1c + 4afe842 commit 83ea009

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

src/main/java/com/authlete/jaxrs/server/api/AuthorizationDecisionEndpoint.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@
1717
package com.authlete.jaxrs.server.api;
1818

1919

20+
import java.util.ArrayList;
21+
import java.util.Arrays;
2022
import java.util.Date;
23+
import java.util.List;
2124
import javax.servlet.http.HttpServletRequest;
2225
import javax.servlet.http.HttpSession;
2326
import javax.ws.rs.Consumes;
@@ -44,6 +47,22 @@
4447
@Path("/api/authorization/decision")
4548
public class AuthorizationDecisionEndpoint extends BaseAuthorizationDecisionEndpoint
4649
{
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+
4766
/**
4867
* Process a request from the form in the authorization page.
4968
*
@@ -83,6 +102,8 @@ public Response post(
83102
User user = ProcessingUtil.getUser(session, parameters);
84103
Date authTime = (Date) session.getAttribute("authTime");
85104

105+
addTxnToClaimNames(params);
106+
86107
// Claims requested to be embedded in the ID token.
87108
String idTokenClaims = (params != null) ? params.getIdTokenClaims() : null;
88109

src/main/java/com/authlete/jaxrs/server/api/AuthorizationDecisionHandlerSpiImpl.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import java.util.Date;
2121
import java.util.List;
2222
import java.util.Map;
23+
import java.util.UUID;
2324
import java.util.regex.Matcher;
2425
import java.util.regex.Pattern;
2526
import javax.ws.rs.WebApplicationException;
@@ -276,6 +277,12 @@ private Object getCustomClaim(String claimName, String languageTag)
276277
return getOpenBankingIntentIdFromIdTokenClaims(claimName);
277278
}
278279

280+
if ("txn".equals(claimName)) {
281+
// txn claim as used in ConnectID Australia:
282+
// https://cdn.connectid.com.au/specifications/digitalid-identity-assurance-profile-06.html
283+
return UUID.randomUUID();
284+
}
285+
279286
// If the name indicates that the claim is a transformed claim.
280287
// See "OpenID Connect Advanced Syntax for Claims (ASC) 1.0"
281288
// for details about transformed claims.

0 commit comments

Comments
 (0)