我有一个带有角4前端的Java应用程序,我正在尝试用OneLogin实现Open授权。我在OneLogin中使用一个重定向URL配置了这个应用程序,该URL是一个API端点,用于收集OneLogin生成的代码。步骤1-3按照OneLogin文档中的描述工作,但是步骤4每次都失败,我不知道为什么。
步骤1:用户尝试使用客户端应用程序启动会话,并被重定向到OpenID提供者(OneLogin),传入客户机ID,这对于该应用程序来说是唯一的。-此操作,用户重定向到由OneLogin.托管的登录页面。
步骤2: OpenID提供程序对特定应用程序实例的用户进行身份验证和授权。-这工作
步骤3:使用预定义的重定向URI将一次性使用的代码传递回web服务器。- URI是服务器上的API端点,它成功地从OneLogin获得代码
步骤4: web服务器将代码、客户端ID和客户端秘密传递给OpenID提供者的令牌端点,OpenID提供程序验证代码并返回一个小时访问令牌。-,这就是我崩溃的地方--
我得到的唯一回复是“授予请求无效”。我正在为这个步骤构建的HTTP POST如下所示:
curl -XPOST "https://openid-connect.onelogin.com/oidc/token"
-H "Content-Type: application/x-www-form-urlencoded"
-d "grant_type=authorization_code
&code=<code returned in step 3>
&redirect_uri=https%3A%2F%2Flocalhost
&client_id=<My OIDC Client ID>
&client_secret=<My OIDC Client Secret>"每次的反应都是:
{
"error": "invalid_grant",
"error_description": "grant request is invalid"
}我完全不知道下一步该做什么。
发布于 2018-12-21 19:44:00
根据https://developers.onelogin.com/openid-connect/api/authorization-code-grant,您需要对clientid & base64进行编码,并将其包含在auth头中。
curl -XPOST "https://<region>.onelogin.com/oidc/token" \
-H "Authorization: Basic <base64 encoded client_id:client_secret>" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code&code=<authorization code>&redirect_uri=<registered redirect uri>"https://stackoverflow.com/questions/52824303
复制相似问题