|
|
@@ -1,5 +1,5 @@
|
|
|
/*
|
|
|
- * Copyright 2020-2023 the original author or authors.
|
|
|
+ * Copyright 2020-2025 the original author or authors.
|
|
|
*
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
@@ -34,6 +34,7 @@ import org.springframework.security.oauth2.core.OAuth2Error;
|
|
|
import org.springframework.security.oauth2.core.OAuth2ErrorCodes;
|
|
|
import org.springframework.security.oauth2.core.OAuth2UserCode;
|
|
|
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames;
|
|
|
+import org.springframework.security.oauth2.core.oidc.OidcScopes;
|
|
|
import org.springframework.security.oauth2.server.authorization.OAuth2Authorization;
|
|
|
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService;
|
|
|
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient;
|
|
|
@@ -165,6 +166,23 @@ public class OAuth2DeviceAuthorizationRequestAuthenticationProviderTests {
|
|
|
// @formatter:on
|
|
|
}
|
|
|
|
|
|
+ @Test
|
|
|
+ public void authenticateWhenOpenIdScopeThenThrowOAuth2AuthenticationException() {
|
|
|
+ RegisteredClient registeredClient = TestRegisteredClients.registeredClient()
|
|
|
+ .authorizationGrantType(AuthorizationGrantType.DEVICE_CODE)
|
|
|
+ .scope(OidcScopes.OPENID)
|
|
|
+ .build();
|
|
|
+ Authentication authentication = createAuthentication(registeredClient);
|
|
|
+ // @formatter:off
|
|
|
+ assertThatExceptionOfType(OAuth2AuthenticationException.class)
|
|
|
+ .isThrownBy(() -> this.authenticationProvider.authenticate(authentication))
|
|
|
+ .withMessageContaining(OAuth2ParameterNames.SCOPE)
|
|
|
+ .extracting(OAuth2AuthenticationException::getError)
|
|
|
+ .extracting(OAuth2Error::getErrorCode)
|
|
|
+ .isEqualTo(OAuth2ErrorCodes.INVALID_SCOPE);
|
|
|
+ // @formatter:on
|
|
|
+ }
|
|
|
+
|
|
|
@Test
|
|
|
public void authenticateWhenDeviceCodeIsNullThenThrowOAuth2AuthenticationException() {
|
|
|
@SuppressWarnings("unchecked")
|