gpt4 book ai didi

javascript - node.js 中的模块 passport-oauth2 : extra parameters to be included in the authorization request

转载 作者:搜寻专家 更新时间:2023-11-01 00:23:34 25 4
gpt4 key购买 nike

我在 node.js 应用程序中实现 Oauth2 身份验证时遇到问题,我需要在授权请求中添加一个额外的参数,但该模块只是忽略了“未知”参数。

我的代码附在下面。被忽略的参数是 APIName

var OAuth2Strategy = require('passport-oauth2').Strategy;

// load the auth variables
var configAuth = require('./auth');

module.exports = function(passport) {

passport.use('ihealth', new OAuth2Strategy({
authorizationURL: 'https://api.ihealthlabs.com:8443/OpenApiV2/OAuthv2/userauthorization/',
tokenURL: 'https://api.ihealthlabs.com:8443/OpenApiV2/OAuthv2/userauthorization/',
clientID: configAuth.iHealthAuth.clientID,
clientSecret: configAuth.iHealthAuth.clientSecret,
callbackURL: configAuth.iHealthAuth.callbackURL,
APIName : 'OpenApiActivity'
},
function(token, refreshToken, profile, done) {

// ...

}
));
};

我知道 APIName 被忽略的原因是我在浏览器中看到了 URL:

https://api.ihealthlabs.com:8443/OpenApiV2/OAuthv2/userauthorization/?response_type=code&redirect_uri=SOMEREDIRECTURI&client_id=SOMECLIENTID

我想知道如何启用向授权请求添加额外参数?也许通过覆盖 node_modules/passport_oauth2/lib/strategy.js 中的函数 OAuth2Strategy.prototype.authorizationParams,在下载的文件中看起来像这样:

/**
* Return extra parameters to be included in the authorization request.
*
* Some OAuth 2.0 providers allow additional, non-standard parameters to be
* included when requesting authorization. Since these parameters are not
* standardized by the OAuth 2.0 specification, OAuth 2.0-based authentication
* strategies can overrride this function in order to populate these parameters
* as required by the provider.
*
* @param {Object} options
* @return {Object}
* @api protected
*/
OAuth2Strategy.prototype.authorizationParams = function(options) {
return {};
};

最佳答案

您可以如下覆盖OAuth2Strategy.prototype.authorizationParams

 var myStrategy = new OAuth2Strategy({
authorizationURL: 'https://api.ihealthlabs.com:8443/OpenApiV2/OAuthv2/userauthorization/',
tokenURL: 'https://api.ihealthlabs.com:8443/OpenApiV2/OAuthv2/userauthorization/',
clientID: configAuth.iHealthAuth.clientID,
clientSecret: configAuth.iHealthAuth.clientSecret,
callbackURL: configAuth.iHealthAuth.callbackURL
},
function(token, refreshToken, profile, done) {
// ...
});

myStrategy.authorizationParams = function(options) {
return {
APIName : 'OpenApiActivity'
};
};

passport.use('ihealth',myStrategy);

对于 Microsoft ADFS OAuth 2,这可用于添加所需的 source 参数;如果希望回调也包含一些特定值,则添加 state 参数。

调用passport.authenticate时可以设置function(options)中的options:

router.get('/auth', passport.authenticate('ihealth', {time: Date.now()}));

关于javascript - node.js 中的模块 passport-oauth2 : extra parameters to be included in the authorization request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32357879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com