获取错误:java.lang.IllegalArgumentException:不是有效的域名:jhipster uaa项目中的'192.168.0.202'

时间:2018-01-25 06:45:04

标签: java jhipster

我创建了一个jhipster网关和微服务项目以及一个UAA服务器。它在我当地的环境中运行良好。但是,当我尝试将其部署到服务器并运行它时,当我尝试从服务器部署的网关项目登录时,我收到类似于下面的错误:

  

不是有效的域名

Error :

    2018-01-25 12:02:42.242 DEBUG 10852 --- [  XNIO-2 task-6] w.i.s.o.OAuth2TokenEndpointClientAdapter : contacting OAuth2 token endpoint to login user: admin
2018-01-25 12:02:42.419 ERROR 10852 --- [  XNIO-2 task-6] c.w.i.s.o.OAuth2AuthenticationService    : failed to get OAuth2 tokens from UAA

java.lang.IllegalArgumentException: Not a valid domain name: '192.168.0.202'
        at com.google.common.base.Preconditions.checkArgument(Preconditions.java:210)
        at com.google.common.net.InternetDomainName.<init>(InternetDomainName.java:155)
        at com.google.common.net.InternetDomainName.from(InternetDomainName.java:216)
        at com.wdsi.iloads.security.oauth2.OAuth2CookieHelper.getCookieDomain(OAuth2CookieHelper.java:296)
        at com.wdsi.iloads.security.oauth2.OAuth2CookieHelper.createCookies(OAuth2CookieHelper.java:109)
        at com.wdsi.iloads.security.oauth2.OAuth2AuthenticationService.authenticate(OAuth2AuthenticationService.java:70)
        at com.wdsi.iloads.web.rest.AuthResource.authenticate(AuthResource.java:51)
        at com.wdsi.iloads.web.rest.AuthResource$$FastClassBySpringCGLIB$$fdfdf7ca.invoke(<generated>)
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:738)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
        at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:85)
        at com.wdsi.iloads.aop.logging.LoggingAspect.logAround(LoggingAspect.java:85)

感谢任何帮助。

1 个答案:

答案 0 :(得分:4)

这是pull request最近在JHipster的生成器中修复的。

要在项目中本地修复它,请编辑OAuth2CookieHelper.java(在Java文件夹的security/oauth2/包中)。在将地址解析为域名之前,请额外检查IP地址。

// add this import
import com.google.common.net.InetAddresses;


    // add this if-statement surrounding the domain name parsing
    // if it isn't an IP address
    if (!InetAddresses.isInetAddress(domain)) {
        // strip off subdomains, leaving the top level domain only
        InternetDomainName domainName = InternetDomainName.from(domain);
        if (domainName.isUnderPublicSuffix() && !domainName.isTopPrivateDomain()) {
            // preserve leading dot
            return "." + domainName.topPrivateDomain().toString();
        }
    }