apereo/cas · warning
No RADIUS address is defined. RADIUS support will be…
Error message
No RADIUS address is defined. RADIUS support will be disabled.
What it means
The RADIUS auto-configuration registers the RADIUS authentication handler only when client IP addresses are configured. When getClientIps returns empty (no cas.authn.radius.client server addresses defined), it logs this warning and registers nothing, disabling RADIUS authentication entirely.
Solutions
- Define at least one RADIUS server address, e.g. cas.authn.radius.client.server[0].address=radius.example.org:1812.
- Verify the properties namespace is cas.authn.radius.client.* and the YAML list is correctly indented.
- Confirm the environment/secret substitution for the address variable actually resolves to a value.
- If RADIUS is not needed, remove the module/dependency instead of leaving it half-configured.
Example fix
# before
cas.authn.radius.client: {}
# after
cas.authn.radius.client.server[0].address=10.0.0.5:1812
cas.authn.radius.client.shared-secret=xxxxxxxx Defensive patterns
Strategy: validation
Validate before calling
if not config.get('cas.authn.radius.client.server'):
raise ValueError('cas.authn.radius.client.server[*].address must be defined for RADIUS support') Prevention
- Keep RADIUS module dependency and its properties added/removed together
- Grep startup logs for 'No RADIUS address is defined' in CI smoke tests
- Avoid empty env-var substitutions feeding the address list
When it happens
Trigger: cas.authn.radius.client has no server entries (empty list of IP/host:port addresses) while the RADIUS support module is active, so the plan configurer has no addresses to build clients from.
Common situations: RADIUS dependency added but properties never set; properties under the wrong prefix (authn.radius vs radius); YAML list indentation errors producing an empty list; using an env var that resolves to empty.
Understand the failure class
Background: "X is required", "must be set", "cannot be empty": the missing-required-config error family, from Vertex AI project/location to WeChat keys — this error's family across 18 libraries.
Related errors
- MultifactorAuthenticationProviderAbsentException
- No user can be accepted because none is defined
- Not all requested multifactor providers could be found…
- Cookie name is undefined
- List of candidate multifactor authentication providers is…
AI-assisted analysis of apereo/cas@e7288fc434 (2026-09-08).
Data as JSON: /api/errors/6253769d4b749d59.
Report an issue: GitHub.
Appendix: source
Thrown at support/cas-server-support-radius/src/main/java/org/apereo/cas/config/CasRadiusAutoConfiguration.java:192
@ConditionalOnMissingBean(name = "radiusAuthenticationEventExecutionPlanConfigurer")
@Bean
@RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
public AuthenticationEventExecutionPlanConfigurer radiusAuthenticationEventExecutionPlanConfigurer(
final ConfigurableApplicationContext applicationContext,
final CasConfigurationProperties casProperties,
@Qualifier("radiusAuthenticationHandler")
final AuthenticationHandler radiusAuthenticationHandler,
@Qualifier(PrincipalResolver.BEAN_NAME_PRINCIPAL_RESOLVER)
final PrincipalResolver defaultPrincipalResolver) {
return BeanSupplier.of(AuthenticationEventExecutionPlanConfigurer.class)
.when(CONDITION.given(applicationContext.getEnvironment()))
.supply(() -> plan -> {
val ips = getClientIps(casProperties.getAuthn().getRadius().getClient());
if (!ips.isEmpty()) {
plan.registerAuthenticationHandlerWithPrincipalResolver(radiusAuthenticationHandler, defaultPrincipalResolver);
} else {
LOGGER.warn("No RADIUS address is defined. RADIUS support will be disabled.");
}
})
.otherwiseProxy()
.get();
}
@ConditionalOnMissingBean(name = "radiusPasswordPolicyConfiguration")
@Bean
@RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
public PasswordPolicyContext radiusPasswordPolicyConfiguration() {
return new PasswordPolicyContext();
}
@RefreshScope(proxyMode = ScopedProxyMode.DEFAULT)
@Bean
@ConditionalOnMissingBean(name = "radiusAccessChallengedMultifactorAuthenticationTrigger")
public MultifactorAuthenticationTrigger radiusAccessChallengedMultifactorAuthenticationTrigger(
final CasConfigurationProperties casProperties,View on GitHub (pinned to e7288fc434)