当前位置: 首页 > 知识库问答 >
问题:

Spring Boot OAuth2自定义登录表单用例

井洲
2023-03-14

“入门Spring Security and Angular JS系列”中的oauth2 JWT项目有一个自定义登录名。为自定义登录页面添加相同的代码到oauth2-vanilla项目失败,因为登录响应中的授权代码始终为空。我还尝试将Sparklr2(https://github.com/spring-projects/spring-security-oauth/tree/master/samples/oauth2)代码移植到Spring Boot中,但授权代码仍然为空。如果这不是一个bug,是否有此用例的示例?
我的问题是在此GitHub URL上报告的:
登录表单URL:https://GitHub.com/dsyer/spring-Security-Angular/blob/master/oauth2/authserver/src/main/oauth2/authplates/Login.ftl
授权表单URL:https://GitHub.com/dsyer/spring-Security-Angular/blob/master/oauth2/authserver/src/main/resources/templates/authize

HTTP跟踪如下

302获取http://localhost:8080/user Request headers:host:localhost:8080 user-agent:mozilla/5.0(Windows NT 6.1;wow64;rv:38.0)gecko/20100101 firefox/38.0接受:应用程序/json,text/plain,/accept-language:en-US,en;q=0.5接受-编码:gzip,deflate x-requested-with:XMLHttpRequest x-xsrf-token:e73f9d6b-9d82-4f09-a327-520c45add5a0 referer:http:xsrf-token=e73f9d6b-9d82-4f09-a327-520c45add5a0连接:保持活动响应头:cache-control:no-cache,no-store,max-age=0,必须重新验证内容-长度:0日期:Tue,2015年5月19日15:59:58 GMT过期:0位置:http://localhost:8080/login pragma:no-cache服务器:apache-coyote/1.1 x-frame-options:DENY x-xss-protection:1;mode=block X-content-type-options:nosniff

200获取http://localhost:8080/home.html请求头:主机:localhost:8080用户-代理:Mozilla/5.0(Windows NT 6.1;WOW64;RV:38.0)Gecko/20100101 Firefox/38.0接受:应用程序/JSON,text/plain,/accept-language:en-US,en;q=0.5接受-编码:gzip,deflate x-请求-with:XMLHttpRequest X-XSRF-令牌:e73f9d6b-9d82-4f09-a327-520c45add5a0引用:xsrf-token=e73f9d6b-9d82-4f09-a327-520c45add5a0 connection:keep-alive响应头:cache-control:no-cache,no-store,max-age=0,必须重新验证内容-长度:219 content-type:text/html;charset=utf-8日期:Tue,2015年5月19日15:59:58 GMT过期:0最后一次修改:Wed,2015年3月25日01:50:42 GMT pragma:no-cache服务器:apache-coyote/1.1 x-application-context:bootstrap x-mode=block X-content-type-options:nosniff

302获取http://localhost:8080/resource/Request headers:host:localhost:8080用户代理:mozilla/5.0(Windows NT 6.1;wow64;rv:38.0)gecko/20100101 firefox/38.0接受:应用程序/json,text/plain,/accept-language:en-US,en;q=0.5接受编码:gzip,deflate x-requested-with:XMLHttpRequest x-xsrf-token:e73f9d6b-9d82-4f09-a327-520c45add5a0引用:http:xsrf-token=e73f9d6b-9d82-4f09-a327-520c45add5a0连接:保持活动响应头:cache-control:no-cache,no-store,max-age=0,必须重新验证内容-长度:0日期:Tue,2015年5月19日15:59:58 GMT过期:0位置:http://localhost:8080/login pragma:no-cache服务器:apache-coyote/1.1 x-frame-options:DENY x-xss-protection:1;mode=block X-content-type-options:nosniff

302获取http://localhost:8080/login Request headers:host:localhost:8080 user-agent:mozilla/5.0(Windows NT 6.1;wow64;rv:38.0)gecko/20100101 firefox/38.0接受:application/json,text/plain,/accept-language:en-US,en;q=0.5接受-编码:gzip,deflate referer:http://localhost:8080/x-xsrf-令牌:e73f9d6b-9d82-4f09-a327-520c45add5a0 x-xsrf-token=e73f9d6b-9d82-4f09-a327-520c45add5a0连接:保持活动响应头:cache-control:no-cache,no-store,max-age=0,必须重新验证内容-长度:0日期:Tue,2015年5月19日15:59:58 GMT过期:0位置:http://localhost:9999/uaa/oauth/authorize?client_id=acme&redirect_uri=http%3a%2f%2flocalhost%3a8080%2flocalhost%3a8080%2floginmode=block X-content-type-options:nosniff

302获取http://localhost:8080/login Request headers:host:localhost:8080 user-agent:mozilla/5.0(Windows NT 6.1;wow64;rv:38.0)gecko/20100101 firefox/38.0接受:application/json,text/plain,/accept-language:en-US,en;q=0.5接受-编码:gzip,deflate referer:http://localhost:8080/x-xsrf-令牌:e73f9d6b-9d82-4f09-a327-520c45add5a0 x-xsrf-token=e73f9d6b-9d82-4f09-a327-520c45add5a0连接:保持活动响应头:cache-control:no-cache,no-store,max-age=0,必须重新验证内容-长度:0日期:Tue,2015年5月19日15:59:58 GMT过期:0位置:http://localhost:9999/uaa/oauth/authorize?client_id=acme&redirect_uri=http%3a%2f%2flocalhost%3a8080%2flocalhost%3a8080%2flogin&response_type=mode=block X-content-type-options:nosniff

302获取http://localhost:8080/login

请求头:主机:localhost:8080用户代理:Mozilla/5.0(Windows NT 6.1;WOW64;RV:38.0)Gecko/20100101 Firefox/38.0接受:文本/HTML,Application/XHTML+XML,Application/XML;q=0.9,/;q=0.8接受-语言:en-US,EN;q=0.5接受-编码:gzip,deflate引用:http://localhost:8080/cookie:jsessionid=681144B950A553779BA1722D4166DB78;XSRF-TOKEN=C46AF943-E520-411B-B96D-E3E45F3196FB连接:保持-活动状态

响应头:cache-control:no-cache,no-store,max-age=0,must-revalidate content-length:0日期:Tue,2015年5月19日15:06:32 GMT过期:0位置:http://localhost:9999/uaa/oauth/authorize?client_id=acme&redirect_uri=http%3a%2f%2flocalhost%3a8080%2flocalhost%3a8080%2flogin&response_type=code&state=lptb5d pragma:no-cache服务器:mode=block X-content-type-options:nosniff

302获取http://localhost:9999/uaa/oauth/authorize?client_id=acme&redirect_uri=http%3a%2f%2flocalhost%3a8080%2flogin&response_type=code&state=lptb5d

请求头:主机:localhost:9999用户代理:Mozilla/5.0(Windows NT 6.1;WOW64;RV:38.0)Gecko/20100101 Firefox/38.0接受:文本/HTML,Application/XHTML+XML,Application/XML;q=0.9,/;q=0.8接受-语言:en-US,EN;q=0.5接受-编码:gzip,deflate引用:http://localhost:8080/cookie:jsessionid=681144B950A553779BA1722D4166DB78;XSRF-TOKEN=C46AF943-E520-411B-B96D-E3E45F3196FB连接:保持-活动状态

响应头:cache-control:no-cache,no-store,max-age=0,must-revalidate content-length:0日期:Tue,2015年5月19日15:06:32 GMT过期:0位置:http://localhost:9999/uaa/login pragma:no-cache服务器:apache-coyote/1.1 set-cookie:jsessionid=fd174af5ef78ecf13f0284101578c6f8;PATH=/UAA/;HttpOnly X-frame-options:DENY X-XSS-protection:1;mode=block X-content-type-options:nosniff

200获取http://localhost:9999/uaa/login

请求头:主机:localhost:9999用户代理:Mozilla/5.0(Windows NT 6.1;WOW64;RV:38.0)Gecko/20100101 Firefox/38.0接受:文本/HTML,Application/XHTML+XML,Application/XML;q=0.9,/;q=0.8接受-语言:en-US,EN;q=0.5接受-编码:gzip,deflate引用:http://localhost:8080/cookie:jsessionid=FD174AF5EF78ECF13F0284101578C6F8;JSessionID=681144B950A553779BA1722D4166DB78;XSRF-TOKEN=C46AF943-E520-411B-B96D-E3E45F3196FB连接:保持-活动状态

响应标头:cache-control:no-cache,no-store,max-age=0,must-revalidate content-language:en-US content-type:text/html;charset=utf-8 date:Tue,19 May 2015 15:06:32 GMT Expires:0 pragma:no-cache server:apache-coyote/1.1 transfer-encoding:chunked x-application-context:application:9999 x-frame-options:DENY x-xss-protection:1;mode=block X-content-type-options:nosniff

200获取wro.css

200获取wro.js

302 POST http://localhost:9999/uaa/login

请求头:主机:localhost:9999用户代理:Mozilla/5.0(Windows NT 6.1;WOW64;RV:38.0)Gecko/20100101 Firefox/38.0接受:文本/HTML,Application/XHTML+XML,Application/XML;q=0.9,/;q=0.8接受-语言:en-US,en;q=0.5接受-编码:gzip,deflate引用:http://localhost:9999/uaa/login cookie:jsessionid=fd174af5ef78ecf13f0284101578c6f8;JSessionID=681144B950A553779BA1722D4166DB78;XSRF-TOKEN=C46AF943-E520-411B-B96D-E3E45F3196FB连接:保持-活动状态

响应头:cache-control:no-cache,no-store,max-age=0,must-revalidate content-length:0日期:Tue,2015年5月19日15:24:02 GMT过期:0位置:http://localhost:9999/uaa/oauth/authorize?client_id=acme&redirect_uri=http%3a%2f%2flocalhost%3a8080%2flogin&response_type=code&state=lptb5d pragma:no-cache服务器:apache-coyote/1.1PATH=/UAA/;HttpOnly X-frame-options:DENY X-XSS-protection:1;mode=block X-content-type-options:nosniff

表单数据参数:用户名:“######”密码:“######”_CSRF:“BA0F23DA-8059-4B7B-89DF-D9998D8DE4FB”

200获取http://localhost:9999/uaa/oauth/authorize?client_id=acme&redirect_uri=http%3a%2f%2flocalhost%3a8080%2flogin&response_type=code&state=lptb5d

请求头:主机:localhost:9999用户代理:Mozilla/5.0(Windows NT 6.1;WOW64;RV:38.0)Gecko/20100101 Firefox/38.0接受:文本/HTML,application/xhtml+xml,application/xml;q=0.9,/;q=0.8接受-语言:en-US,en;q=0.5接受-编码:gzip,deflate引用:http://localhost:9999/uaa/login cookie:jsessionid=12d1c160b5cdead0f9c96e9fb9e53a9;JSessionID=681144B950A553779BA1722D4166DB78;XSRF-TOKEN=C46AF943-E520-411B-B96D-E3E45F3196FB连接:保持-活动状态

响应标头:cache-control:no-cache,no-store content-language:en-US content-type:text/html;charset=utf-8 date:Tue,19 May 2015 15:24:02 GMT Expires:Thu,1970 01 Jan 00:00:00 GMT pragma:no-cache服务器:apache-coyote/1.1 transfer-encoding:chunked x-application-context:application:9999 x-frame-options:DENY x-xss-protection:1;mode=block X-content-type-options:nosniff

304获取wro.css

304获取wro.js

302 POST http://localhost:9999/uaa/oauth/authorize

请求头:主机:localhost:9999用户代理:Mozilla/5.0(Windows NT 6.1;WOW64;RV:38.0)Gecko/20100101 Firefox/38.0接受:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8接受语言:en-US,en;q=0.5接受编码:gzip,deflate referer:htt://localhost:9999/uaa/oauth/authorize?client_id=acme&redirect_uri=http%3a%2fJSessionID=681144B950A553779BA1722D4166DB78;XSRF-TOKEN=C46AF943-E520-411B-B96D-E3E45F3196FB连接:保持-活动状态

响应头:cache-control:no-cache,no-store content-language:en-US content-length:0日期:Tue,195,195 15:31:51 GMT过期:Thu,1970年1月1日00:00:00 GMT位置:http://localhost:8080/login?error=access_denied&error_description=user%20denied%20access&state=lptb5d pragma:no-cache服务器:apache-coyote/1.1 x-application-context:application:9999 x-frame-options:DENY x-xss-mode=block X-content-type-options:nosniff

表单数据参数:USER_OAUTH_APPROVATION:“TRUE”_CSRF:“32E46C90-0AAC-4120-8D31-F31A7E6FE0EC”

401获取http://localhost:8080/login?error=access_denied&error_description=user%20denied%20access&state=lptb5d

请求头:主机:localhost:8080用户代理:Mozilla/5.0(Windows NT 6.1;WOW64;RV:38.0)Gecko/20100101 Firefox/38.0接受:text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8接受语言:en-US,en;q=0.5接受编码:gzip,deflate referer:htt://localhost:9999/uaa/oauth/authorize?client_id=acme&redirect_uri=http%3a%2fXSRF-TOKEN=C46AF943-E520-411B-B96D-E3E45F3196FB连接:保持-活动状态

响应标头:cache-control:no-cache,no-store,max-age=0,must-revalidate content-language:en-US content-length:341 content-type:text/html;charset=iso-8859-1 date:Tue,19 5月19 2015 15:31:52 GMT过期:0 pragma:no-cache server:apache-coyote/1.1 x-frame-options:DENY x-xss-protection:1;mode=block X-content-type-options:nosniff

共有1个答案

阙沛
2023-03-14
   <input type="hidden" name="scope.openid" value="true"/>
   <input type="hidden" name="scope.openid" value="false"/>

未在授权表单中设置客户端范围。如上图所示,向表单中添加批准和拒绝请求的额外输入。

 类似资料:
  • 我学习了spring教程“SSOwith OAuth2:Angular JS和spring Security Part V”。 2016-05-18 11:14:53.667 DEBUG 22312---[nio-9999-exec-9]O.security.web.filterchainproxy:/login位于附加筛选器链中14的位置5;正在激发筛选器:“logoutfilter”2016-

  • 断然的: Spring Security 4似乎不再提供默认的login-Procage-url。我们现在必须在form-login中显式提供它,如下所示。 我有一个奇怪的行为组合,让我感到困惑。找到了很多教程和类似的问题,但没有一个完全像这样。我希望有人能帮忙。 短版本:重新显示登录页面-无论用户名/密码是好是坏,并且从不调用AuthenticationProvider(断点未触发)。 长版本:

  • 我是Spring安全 4 的新手。我已经用支柱 2 和Spring安全性做了一个简单的应用程序。我正在使用自定义登录表单。发生的事情是当我提交登录表单时,我被重定向到 http://localhost:8080/SpringSecurity/admin 但仍然收到以下错误 HTTP状态404- /SpringSecurity/admin 类型状态报告 message/SpringSecurity/

  • 而且,再一次,即使键入正确的凭据,正如我在“userDetailsService”方法中指定的那样,我也无法登录,但这次我终于可以在控制台上看到错误消息: 显然我走了,但没有离开这个地方,因为现在我不知道我的代码有什么问题...

  • 很好的一天。我正在尝试使用php和xampp创建一个登录表单来运行代码。我在phpMyAdmin中已经有一个数据库,我得到了这个错误 连接! 致命错误:未捕获错误:调用C:\xampp\htdocs\login\connection中未定义的函数mysql\u query()。php:34堆栈跟踪:#0{main}在C:\xampp\htdocs\login\connection中抛出。第34行的

  • 在Spring Security中使用自定义JSP登录页面相当容易。不过,我们的应用程序是基于Vaadin的,我不想使用JSP登录页面。我想要的是作为Vaadin小部件创建的自定义高级登录窗口。 从技术上讲,我可以使用Vaadin的FormLayout和名称字段,比如j_用户名和j_密码……但这是Java类,而不是JSP文件,那么我在http Spring Security元素中指定了什么?我的意