Browse Source

SEC-1753: Cater for missing DiscoveryInformation object in OpenID4JavaConsumer.endConsumption.

pull/1/head
Luke Taylor 15 years ago
parent
commit
89fa771093
  1. 5
      openid/src/main/java/org/springframework/security/openid/OpenID4JavaConsumer.java
  2. 5
      openid/src/test/java/org/springframework/security/openid/OpenID4JavaConsumerTests.java

5
openid/src/main/java/org/springframework/security/openid/OpenID4JavaConsumer.java

@ -144,6 +144,11 @@ public class OpenID4JavaConsumer implements OpenIDConsumer { @@ -144,6 +144,11 @@ public class OpenID4JavaConsumer implements OpenIDConsumer {
// retrieve the previously stored discovery information
DiscoveryInformation discovered = (DiscoveryInformation) request.getSession().getAttribute(DISCOVERY_INFO_KEY);
if (discovered == null) {
throw new OpenIDConsumerException("DiscoveryInformation is not available. Possible causes are lost session or replay attack");
}
List<OpenIDAttribute> attributesToFetch = (List<OpenIDAttribute>) request.getSession().getAttribute(ATTRIBUTE_LIST_KEY);
request.getSession().removeAttribute(DISCOVERY_INFO_KEY);

5
openid/src/test/java/org/springframework/security/openid/OpenID4JavaConsumerTests.java

@ -189,6 +189,11 @@ public class OpenID4JavaConsumerTests { @@ -189,6 +189,11 @@ public class OpenID4JavaConsumerTests {
consumer.fetchAxAttributes(msg, attributes);
}
@Test(expected=OpenIDConsumerException.class)
public void missingDiscoveryInformationThrowsException() throws Exception {
OpenID4JavaConsumer consumer = new OpenID4JavaConsumer(new NullAxFetchListFactory());
consumer.endConsumption(new MockHttpServletRequest());
}
@SuppressWarnings("deprecation")
@Test

Loading…
Cancel
Save