gpt4 book ai didi

Meteor.js 和自定义 OpenId Connect 服务器

转载 作者:行者123 更新时间:2023-12-04 19:04:28 24 4
gpt4 key购买 nike

如何通过 Meteor.js 中的自定义 token 服务器进行身份验证?

是否有任何像 account-google 这样的用于自定义 token 服务器的软件包,它仅通过将 token 端点、客户端 ID、 secret 和范围作为配置参数来处理身份验证。

最佳答案

我不知道通用的 oauth 包。但是为您的特定服务器编写一个包应该不会太难,因为有许多示例可供查看。

以accounts-github为例,这里是code用于在客户端建立连接。请注意端点 URL、客户端 ID、范围等。这将为您处理弹出窗口,但您可能希望包含自定义 CSS:

var loginUrl =
'https://github.com/login/oauth/authorize' +
'?client_id=' + config.clientId +
'&scope=' + flatScope +
'&redirect_uri=' + OAuth._redirectUri('github', config) +
'&state=' + OAuth._stateParam(loginStyle, credentialToken);

OAuth.launchLogin({
loginService: "github",
loginStyle: loginStyle,
loginUrl: loginUrl,
credentialRequestCompleteCallback: credentialRequestCompleteCallback,
credentialToken: credentialToken,
popupOptions: {width: 900, height: 450}
});

这是来自 server 的片段一边,完成获取访问 token 的过程:
var getAccessToken = function (query) {
var config = ServiceConfiguration.configurations.findOne({service: 'github'});
if (!config)
throw new ServiceConfiguration.ConfigError();

var response;
try {
response = HTTP.post(
"https://github.com/login/oauth/access_token", {
headers: {
Accept: 'application/json',
"User-Agent": userAgent
},
params: {
code: query.code,
client_id: config.clientId,
client_secret: OAuth.openSecret(config.secret),
redirect_uri: OAuth._redirectUri('github', config),
state: query.state
}
});
} catch (err) {
throw _.extend(new Error("Failed to complete OAuth handshake with Github. " + err.message),
{response: err.response});
}
if (response.data.error) { // if the http response was a json object with an error attribute
throw new Error("Failed to complete OAuth handshake with GitHub. " + response.data.error);
} else {
return response.data.access_token;
}
};

并利用 token 获取用户身份:
var getIdentity = function (accessToken) {
try {
return HTTP.get(
"https://api.github.com/user", {
headers: {"User-Agent": userAgent}, // http://developer.github.com/v3/#user-agent-required
params: {access_token: accessToken}
}).data;
} catch (err) {
throw _.extend(new Error("Failed to fetch identity from Github. " + err.message),
{response: err.response});
}
};

githubaccounts-github包作为引用应该很有帮助。

关于Meteor.js 和自定义 OpenId Connect 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28751145/

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