oauth2 遇到的坑,本地环境和发布打包服务器的配置

原文:http://www.5180it.com/bbs/admin/1/540.html

oauth2页面问题

我在本地上运行是没问题,发布上linux环境就出现下面情况

 

javax.servlet.ServletException: Cannot expose bind macro helper 'springMacroRequestContext' because of an existing model object of the same name

        at org.springframework.web.servlet.view.AbstractTemplateView.renderMergedOutputModel(AbstractTemplateView.java:156) ~[spring-webmvc-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]

        at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:304) ~[spring-webmvc-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]

        at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1286) ~[spring-webmvc-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]

        at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1041) ~[spring-webmvc-4.3.25.RELEASE.jar!/:4.3.25.RELEASE]

 

解决办法 添加 spring.freemarker.expose-spring-macro-helpers=true

spring.thymeleaf.prefix=classpath:/templates/

spring.thymeleaf.cache=false

spring.thymeleaf.suffix=.html

spring.freemarker.expose-spring-macro-helpers=true

 

另外我发现本地环境在自定义授权页面  /oauthGrant  在 templates 路径下也有oauthGrant.html 页面

但发布上linux服务器确说页面不存在,觉得非常奇怪 , 所以将

return "/oauthGrant";  改成  return "oauthGrant";

就可以了

 

获取token接口/oauth/token 接口问题

在本地能访问当发布上linux就返回401如下

 <!doctype html>

 <html lang="en-US">

 <head>

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

  <title>401 - 对不起,您没有访问权限</title>

  <link href="/css/500.css" rel="stylesheet">

 </head>

 <body>

  <div id="wrapper">

   <a class="logo" href="#"></a>

   <div id="main">

    <div id="header">

     <h1><span class="icon">!</span>401<span class="sub">权限错误</span></h1>

    </div>

    <div id="content">

     <h2>对不起!您没有访问权限</h2>

    </div>

   </div>

  </div>

</html>

我的header也是传了Authorization,网上说加上 allowFormAuthenticationForClients,但还是不行

    @Override

    public void configure(AuthorizationServerSecurityConfigurer security) throws Exception {

 

        security

        .tokenKeyAccess("permitAll()")

        .checkTokenAccess("permitAll()")

        .allowFormAuthenticationForClients()

        .passwordEncoder(passwordEncoder());

    }

找了好久报着尝试心态,加了passwordEncoder(passwordEncoder()); 居然可以了这不清楚为啥本地可以,但linux要加上这个密码加密的

 

 

 

oauth2服务器nginx配置问题 ,发现打开的页面跳转都没了端口,我这里是https的

这里直接给出解决方法

 

server {

        listen 8891 ssl;

        server_name 5180it.com;

        #ssl on;

        root html;

        index index.html index.htm;

        ssl_certificate cert/5180it.com.pem;

        ssl_certificate_key cert/5180it.com.key;

        ssl_session_timeout 5m;

        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

        ssl_prefer_server_ciphers on;

        location / {

            proxy_pass http://xiaoMiuser;

            client_max_body_size 500m;

            proxy_set_header X-Forwarded-Host $host;

            proxy_set_header X-Forwarded-Server $host;

            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

            proxy_set_header Host $host:$server_port;

            proxy_connect_timeout 30;

            proxy_send_timeout 60;

    }

}

 

upstream xiaoMiuser {

    server  你的服务器地址;  #如172.18.22.123:8080

}

proxy_set_header Host $host:$server_port; #重点重定向会导致oAuth2找不到正确的重定向地址

 

 

 

 

原文:http://www.5180it.com/bbs/admin/1/540.html

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值