Skip to content

Commit ee0e93b

Browse files
committed
UY-1290 add support single value audience
1 parent 9e87698 commit ee0e93b

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

oauth/src/main/java/pl/edu/icm/unity/oauth/as/OAuthToken.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.util.List;
1010
import java.util.Objects;
1111

12+
import com.fasterxml.jackson.annotation.JsonFormat;
1213
import com.fasterxml.jackson.annotation.JsonIgnore;
1314
import com.fasterxml.jackson.core.JsonProcessingException;
1415
import com.nimbusds.oauth2.sdk.client.ClientType;
@@ -39,6 +40,7 @@ public class OAuthToken
3940
private int maxExtendedValidity;
4041
private int tokenValidity;
4142
private String responseType;
43+
@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
4244
private List<String> audience;
4345
private String issuerUri;
4446
private ClientType clientType;
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
/*
2+
* Copyright (c) 2021 Bixbit - Krzysztof Benedyczak. All rights reserved.
3+
* See LICENCE.txt file for licensing information.
4+
*/
5+
6+
package pl.edu.icm.unity.oauth.as.token;
7+
8+
import static org.hamcrest.CoreMatchers.is;
9+
import static org.junit.Assert.assertThat;
10+
11+
import org.junit.Test;
12+
13+
import pl.edu.icm.unity.oauth.as.OAuthToken;
14+
15+
public class OAuthTokenParsingTest
16+
{
17+
18+
@Test
19+
public void shouldParseTokenWithMultiAudience()
20+
{
21+
OAuthToken token = OAuthToken.getInstanceFromJson(
22+
("{\"userInfo\":\"{\\\"name\\\":\\\"Default Administrator\\\",\\\"sub\\\":\\\"12a1197c-9c89-44b9-b889-740263cdb6b7\\\","
23+
+ "\\\"picture\\\":\\\"url\\\",\\\"username\\\":\\\"a\\\"}\","
24+
+ "\"openidInfo\":\"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvbG9jYWxob3N0OjI0NDNcL29hdXRoMiIsInN1YiI6IjEyYTExOTdjLTljODktNDRiOS1iODg5LTc0MDI2M2NkYjZiNyIsImF1ZCI6Im9hdXRoLWNsaWVudCIsImV4cCI6MTY2NTkwODMwOCwiaWF0IjoxNjY1OTA0NzA4fQ.NK3QnylysQgFKY9801dnt_BSMZ6N53XZqlEnPp4iXiRCS-8v9o_qdRnQFuBkqtVotBfi9ZbRVZQk8796IUy_WZg9euQVvGgIKQCYKSp54JsMvP7cDyJ0cpoeMuclLrZ62L-PDJm1PKGXCCoJkrnP2qErVne4xDyjSwFwmEwSmsQVGBjEA8TXl6hcAha4cl5hpL5SdxTagGgmd_Hs0zfpyTjwqR2XByOb9fV6-NOHluatcnKp-EROPn_o-Vdi0uyY7ENbP2Q-ftiqG0KHoGN2HDS6IRypBrAqBhtOnQAIZ35PnFrsKlMVZu4nN-9B6cJq_upaWlliLke3_JicPLivRKimGLEQyjvQb3cKy1Jj3YKKO1DK-rr5UOJXfm_Yffw7l8qlOMXmn2re0274R3OsTTOxS9CD4piGlG5crucQ5xK7I2Z5ye6WUcRSM76jmn-6_HeY3xudeulYdnGPUDojJB43F0NhQcB49ihPur_vYLsS4-GvrZ4o0WWbgQ7jtUUb3Y5lDgJTj7a7FMGtQHAmGmvGpqtAUtQLY5bcjC84zcLAZsDIYLsDZA3HyD0qvMy0QOmZy-G6ikHZ5os2jdqDLETLjteFT0ODuR2wO6olwaWYCmcLkSjeFkGR2eJP4MH3ljgYtgUt0Q5VQN34dkv2sKFYD5BxOr3M5mtD5jxgGAk\","
25+
+ "\"authzCode\":\"-xWGHBib3P6oGQVxx1neQMxHwiJnaX7vhdUV7GiBEXQ\",\"accessToken\":\"tY0x-AKE71CWesO9S28BoPgMTF1nFijHoFzm10YYL7U\","
26+
+ "\"refreshToken\":null,\"firstRefreshRollingToken\":null,\"effectiveScope\":[\"openid\",\"profile\"],"
27+
+ "\"requestedScope\":[\"openid\",\"profile\"],"
28+
+ "\"redirectUri\":\"https://localhost:2443/unitygw/oauth2ResponseConsumer\","
29+
+ "\"subject\":\"12a1197c-9c89-44b9-b889-740263cdb6b7\",\"clientName\":null,"
30+
+ "\"clientUsername\":\"oauth-client\",\"maxExtendedValidity\":0,\"tokenValidity\":3600,"
31+
+ "\"responseType\":\"code\",\"audience\":[\"oauth-client\", \"oauth-client2\"],"
32+
+ "\"issuerUri\":\"https://localhost:2443/oauth2\",\"clientType\":\"CONFIDENTIAL\","
33+
+ "\"pkcsInfo\":{\"codeChallenge\":null,\"codeChallengeMethod\":null},\"clientId\":3}")
34+
.getBytes());
35+
36+
assertThat(token.getAudience().get(0), is("oauth-client"));
37+
assertThat(token.getAudience().get(1), is("oauth-client2"));
38+
39+
}
40+
41+
@Test
42+
public void shouldParseTokenWithSingleAudience()
43+
{
44+
OAuthToken token = OAuthToken.getInstanceFromJson(
45+
("{\"userInfo\":\"{\\\"name\\\":\\\"Default Administrator\\\",\\\"sub\\\":\\\"12a1197c-9c89-44b9-b889-740263cdb6b7\\\","
46+
+ "\\\"picture\\\":\\\"url\\\",\\\"username\\\":\\\"a\\\"}\","
47+
+ "\"openidInfo\":\"eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczpcL1wvbG9jYWxob3N0OjI0NDNcL29hdXRoMiIsInN1YiI6IjEyYTExOTdjLTljODktNDRiOS1iODg5LTc0MDI2M2NkYjZiNyIsImF1ZCI6Im9hdXRoLWNsaWVudCIsImV4cCI6MTY2NTkwODMwOCwiaWF0IjoxNjY1OTA0NzA4fQ.NK3QnylysQgFKY9801dnt_BSMZ6N53XZqlEnPp4iXiRCS-8v9o_qdRnQFuBkqtVotBfi9ZbRVZQk8796IUy_WZg9euQVvGgIKQCYKSp54JsMvP7cDyJ0cpoeMuclLrZ62L-PDJm1PKGXCCoJkrnP2qErVne4xDyjSwFwmEwSmsQVGBjEA8TXl6hcAha4cl5hpL5SdxTagGgmd_Hs0zfpyTjwqR2XByOb9fV6-NOHluatcnKp-EROPn_o-Vdi0uyY7ENbP2Q-ftiqG0KHoGN2HDS6IRypBrAqBhtOnQAIZ35PnFrsKlMVZu4nN-9B6cJq_upaWlliLke3_JicPLivRKimGLEQyjvQb3cKy1Jj3YKKO1DK-rr5UOJXfm_Yffw7l8qlOMXmn2re0274R3OsTTOxS9CD4piGlG5crucQ5xK7I2Z5ye6WUcRSM76jmn-6_HeY3xudeulYdnGPUDojJB43F0NhQcB49ihPur_vYLsS4-GvrZ4o0WWbgQ7jtUUb3Y5lDgJTj7a7FMGtQHAmGmvGpqtAUtQLY5bcjC84zcLAZsDIYLsDZA3HyD0qvMy0QOmZy-G6ikHZ5os2jdqDLETLjteFT0ODuR2wO6olwaWYCmcLkSjeFkGR2eJP4MH3ljgYtgUt0Q5VQN34dkv2sKFYD5BxOr3M5mtD5jxgGAk\","
48+
+ "\"authzCode\":\"-xWGHBib3P6oGQVxx1neQMxHwiJnaX7vhdUV7GiBEXQ\",\"accessToken\":\"tY0x-AKE71CWesO9S28BoPgMTF1nFijHoFzm10YYL7U\","
49+
+ "\"refreshToken\":null,\"firstRefreshRollingToken\":null,\"effectiveScope\":[\"openid\",\"profile\"],"
50+
+ "\"requestedScope\":[\"openid\",\"profile\"],"
51+
+ "\"redirectUri\":\"https://localhost:2443/unitygw/oauth2ResponseConsumer\","
52+
+ "\"subject\":\"12a1197c-9c89-44b9-b889-740263cdb6b7\",\"clientName\":null,"
53+
+ "\"clientUsername\":\"oauth-client\",\"maxExtendedValidity\":0,\"tokenValidity\":3600,"
54+
+ "\"responseType\":\"code\",\"audience\":\"oauth-client\","
55+
+ "\"issuerUri\":\"https://localhost:2443/oauth2\",\"clientType\":\"CONFIDENTIAL\","
56+
+ "\"pkcsInfo\":{\"codeChallenge\":null,\"codeChallengeMethod\":null},\"clientId\":3}")
57+
.getBytes());
58+
59+
assertThat(token.getAudience().get(0), is("oauth-client"));
60+
}
61+
}

0 commit comments

Comments
 (0)