我开始在节点 js 中使用带有 oidc 的 OAuth2 服务器。Github 链接
我的目标很简单,访问作为 UserInfo 端点的 https://myserver/me。
在尝试学习如何使用服务器时,我还使用了本指南,在此处输入链接描述 我发现我可以通过向端点 /token 发送请求来创建令牌。
在配置中我添加了这段代码(完整的服务器代码如下):
{
client_id: 'test_oauth_app',
client_secret: 'super_secret',
grant_types: ['client_credentials'],
redirect_uris: [],
response_types: [],
}
在邮递员中,我能够通过这个请求获得我的 access_token
POST /token
Headers:
Content-Type: application/x-www-form-urlencoded
Authorization: Basic dGVzdF9vYXV0aF9hcHA6c3VwZXJfc2VjcmV0
Body:
grant_type=client_credentials&scopes=api1
我得到这个作为回应:
{
"access_token": "zdjmZo7_BQSIl4iK9IMcBbKffxGO-wQ3jLzzQXTlyws",
"expires_in": 600,
"token_type": "Bearer"
}
当我通过 /token/introspection 检查令牌时,我发现令牌等于 jti。所以我认为它实际上返回 token_id 并且我无法访问 /me 端点。
这是我使用的整个服务器示例:
const { Provider } = require('oidc-provider');
const configuration = {
features: {
introspection: { enabled: true },
clientCredentials: { enabled: true },
userinfo: { enabled: true },
jwtUserinfo: { enabled: true },
},
formats: {
AccessToken: 'jwt',
},
clients: [{
client_id: 'test_oauth_app',
client_secret: 'super_secret',
grant_types: ['client_credentials'],
redirect_uris: [],
response_types: []
}],
scopes: ['api1']
};
const oidc = new Provider('http://localhost:3000', configuration);
oidc.proxy = true
// express/nodejs style application callback (req, res, next) for use with express apps, see /examples/express.js
oidc.callback
// koa application for use with koa apps, see /examples/koa.js
oidc.app
// or just expose a server standalone, see /examples/standalone.js
const server = oidc.listen(3000, () => {
console.log('oidc-provider listening on port 3000, check https://localhost:3000/.well-known/openid-configuration');
});
代理设置为 true,因为我在 apache 上设置了 https 以重定向到此服务器。
我试图更改 response_types,但它需要我不想在我的场景中使用的 redirect_uri。
这是我试图这样发布的请求:
POST /me
Headers:
Content-Type: application/json
Authorization: Bearer zdjmZo7_BQSIl4iK9IMcBbKffxGO-wQ3jLzzQXTlyws
响应:
{
"error": "invalid_token",
"error_description": "invalid token provided"
}
有没有人有类似的问题?不幸的是,我在这里发现了几乎相同的问题, 但没有解决方案。