嘿,我正在使用开放的id连接授权代码流来验证我的用户。在成功的身份验证之后,我将接收访问令牌和ID令牌。现在,当我的用户从OIDC提供者访问身份验证并被授予ID令牌时,我感到困惑,所以现在为了访问我的应用程序的API,我将在每个API请求中将访问令牌作为承载令牌传递,以及我的应用程序将如何验证访问令牌仍然有效并访问请求的API?是否需要再次向OIDC提供程序提出请求以验证访问令牌的有效性?如果是,那么,对于每个API,我必须向OIDC提供者发送一个请求,以验证我的访问令牌,并检查用户是否有权访问该API?请建议我最好的方法来验证用户的API访问,而不需要花费很多。
发布于 2022-02-19 10:09:00
API使用一个安全库在每个请求上验证一个JWT访问令牌。其中第一个文件将从授权服务器的JWKS端点下载令牌签名公钥,然后库应该为您缓存这些公钥。
这里是Node.js中的一些示例代码,相同类型的代码可以用任何编程语言编写。您将需要检查您的JWT访问令牌(如在OAuth工具中),以查看发行者和受众声称它包含的内容,然后配置它们。
const accessToken = readAccessTokenFromAuthorizationHeader();
const remoteJwkSet = createRemoteJWKSet(new URL(this._configuration.jwksEndpoint));
const options = {
algorithms: ['RS256'],
issuer: 'myissuer',
audience: 'myaudience',
};
// Verify the JWT's digital signature
const result = await jwtVerify(accessToken, remoteJwkSet, options);
// On success, you can then use claims to enforce authorization
const claims = result.payload;
https://stackoverflow.com/questions/71180228
复制相似问题