|
|
|
@ -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"); |
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License"); |
|
|
|
* you may not use this file except in compliance with 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.OAuth2ErrorCodes; |
|
|
|
import org.springframework.security.oauth2.core.OAuth2UserCode; |
|
|
|
import org.springframework.security.oauth2.core.OAuth2UserCode; |
|
|
|
import org.springframework.security.oauth2.core.endpoint.OAuth2ParameterNames; |
|
|
|
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.OAuth2Authorization; |
|
|
|
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService; |
|
|
|
import org.springframework.security.oauth2.server.authorization.OAuth2AuthorizationService; |
|
|
|
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient; |
|
|
|
import org.springframework.security.oauth2.server.authorization.client.RegisteredClient; |
|
|
|
@ -165,6 +166,23 @@ public class OAuth2DeviceAuthorizationRequestAuthenticationProviderTests { |
|
|
|
// @formatter:on
|
|
|
|
// @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 |
|
|
|
@Test |
|
|
|
public void authenticateWhenDeviceCodeIsNullThenThrowOAuth2AuthenticationException() { |
|
|
|
public void authenticateWhenDeviceCodeIsNullThenThrowOAuth2AuthenticationException() { |
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
|