- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在尝试访问某些 protected 端点时,我的 Oauth2 服务器 (Spring) 出现了一些问题。
如果我想获得 token (通过 Zuul 网关),我会这样做:
http://localhost:4444/auth/oauth/token?client_id=gateway&client_secret=1234&grant_type=password&username=user&password=password
(假设上面的客户端和用户正确存在并且 Content-Type 为 application/x-www-form-urlencoded)。
这个调用不起作用,但是,如果我这样做:
gateway:1234@localhost:4444/auth/oauth/token?grant_type=password&username=user&password=password
然后,它起作用了。
这被认为是正常行为吗?据我所知,这应该有效。这就像当我将它们作为参数发送时没有处理 id 和 secret ,但是当我修改 url 时,它被采用并且一切正常。我需要实现一些额外的东西吗?
澄清一下,当我像在第二个 url 中一样发送 client_id 和 client_secret 时,Oauth2 服务器工作,但如果我将它们作为参数(第一个 url)发送,它就不会工作。
您可以在此处查看代码(OAuth2 服务):https://github.com/otamega93/CloudBasedUserRegistration2/tree/master/OAuth2-service
配置主要在OAuth2Configuration、WebSecurityConfig和AuthServerApplication。我正在用 postman 进行测试。当我直接访问 Oauth2 服务器时也会发生这种情况。
最佳答案
token 端点 (oauth/token
) 受到保护,请参阅 TokenEndpoint
:
Clients must be authenticated using a Spring Security Authentication to access this endpoint, and the client id is extracted from the authentication token. The best way to arrange this (as per the OAuth2 spec) is to use HTTP basic authentication for this endpoint with standard Spring Security support.
并查看 OAuth 2 Developers Guide :
The token endpoint is protected for you by default by Spring OAuth in the
@Configuration
support using HTTP Basic authentication of the client secret. This is not the case in XML (so it should be protected explicitly).
客户端必须使用基本身份验证方案对自己进行身份验证,因此客户端必须向请求添加一个Authorization
header ,请参阅RFC 2617 :
To receive authorization, the client sends the userid and password,separated by a single colon (":") character, within a base64 [7]encoded string in the credentials.
basic-credentials = base64-user-pass
base64-user-pass = <base64 [4] encoding of user-pass,
except not limited to 76 char/line>
user-pass = userid ":" password
userid = *<TEXT excluding ":">
password = *TEXTUserids might be case sensitive.
If the user agent wishes to send the userid "Aladdin" and password"open sesame", it would use the following header field:
Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==
您的第一个请求不包含 Authorization
header 。
您的第二个请求包含一个带有“userinfo”子组件的 URL,请参阅 RFC 3986 :
The userinfo subcomponent may consist of a user name and, optionally,scheme-specific information about how to gain authorization to accessthe resource. The user information, if present, is followed by acommercial at-sign ("@") that delimits it from the host.
关于spring - client_id 和 client_secret 通过参数与 url 发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47662358/
我正在使用 django-social-auth 为我的 django 项目进行 google apps 身份验证。我从我的域的 Google api 控制台获取了客户端 ID 和 key 。并按如下
当我尝试使用 next auth 创建一个 discord oauth 客户端并单击登录时,出现此错误: https://next-auth.js.org/errors#get_authorizati
我已经设置了用于单点登录的 Azure AD 应用程序。我按照微软的教程https://dev.onedrive.com/auth/aad_oauth.htm设置此 upp,大多数情况下一切正常。
我是基于 Facebook 的开发的新手,只需要一个基本的 Facebook 注册表,我找到了“注册表及其 html 以嵌入我的网站”,但需要一个 client_id 以便我可以使用它。我从哪里得到这
我正在尝试根据 client_id 使用不同的登录页面。 用例:我的默认登录页面是经典的用户名/密码类型登录,但对于特定的 client_id,登录页面要求提供 3 种不同的信息,其中一种是他在邮件中
我正在尝试根据 client_id 使用不同的登录页面。 用例:我的默认登录页面是经典的用户名/密码类型登录,但对于特定的 client_id,登录页面要求提供 3 种不同的信息,其中一种是他在邮件中
我已经使用 Web API 2 实现了 Google 身份验证并收到以下错误: The given URL is not allowed by Client_id 'ngAuthApp' config
我有一个 API,用于我正在开发的项目。我收到客户端 ID 的关键错误,我必须传递该错误才能调用 api。我使用的 api 是 Synapse。如果有人知道导致错误的原因或我如何修复此关键错误,这将是
我一直在使用 LinkedIn api (OAuth 2),并且找到了一个示例来帮助测试它。我已严格按照教程进行操作,但由于某种原因,当我提供完整的重定向 URL(按照代码中的要求)时,出现错误:(i
我有五张 table ;客户、第一部分、第二部分、第三部分、第四部分。输入数据后,每个表都会自动在第一个字段中填充 client_id。我想检索网站上特定客户端的每个表(第一节、第二节、第三节、第四节
目前我正尝试在我的网络应用程序上连接 paypal oauth 登录。但是我收到了这个错误 客户端代码 paypal.use(["login"], function (login) {
我试图从 hms 服务器请求一个 oauth token ,但它总是返回 missing required parameter: client_id 给我。 url: https://oauth-lo
当我使用 Oauth2.0 从谷歌联系人 API 获得响应时,它返回的响应如下所示 “该网站 251543634636.apps.googleusercontent.com 正在请求访问您的 Goog
有点 OAUTH 的初学者,想问我是否理解正确。我正在使用 OWIN 和 C#,并设置以下场景: 用户向我的 token 端点发出请求,传入用户名/密码和密码 grant_type。如果凭据有效,那么
我遇到了一个我不明白的问题!我正在开发一个react-native(js)应用程序,它尝试使用隐式授权流访问Spotify api。 这是我获取访问 token 的方法: async function
在移动平台上使用带有 OAuth2 的用户代理流程时,授权服务器无法验证应用程序的 client_id。 因此,任何人都可以通过复制 client_id 来冒充我的应用程序(从而代表我获取所有访问 t
我正在尝试从 SoundCloud 为 HTML5 播放器传输音乐,我希望它(其核心)像这个 fiddle http://jsfiddle.net/kS97M/5/ 一样工作。 SC.initiali
我正在尝试使用 Javascript 从 ArcGIS Online 服务获取 token 。但是,它总是返回一个错误,表明未指定 client_id。 我做的一切都在这里吗? var My
是否有某种我可以通过扩展访问的唯一客户端 ID,如果没有,我是否可以永久设置某种 UUID(例如 IE 注册表或 FF 中的全局首选项)?我不想每次用户重新安装我的扩展程序时都重新生成 UUID。 谢
所以我刚刚从 LinkedIn oauth 1.0 升级到 2.0,我已经收到这个错误大约一天了。我在 php 上看到了一篇关于它的帖子,但我无法在 Node JS (Javascript) 中弄清楚
我是一名优秀的程序员,十分优秀!