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

帕万·库玛(Pavan Kumar)

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

是否有像自定义令牌服务器那样的accounts-google这样的软件包,它仅通过将令牌端点,客户端ID,秘密和作用域作为配置参数来处理身份验证。

耶鲁曼

我不知道通用的oauth软件包。但是,为您的特定服务器编写程序包并不难,因为有许多示例可供参考。

以accounts-github为例,这是在客户端上进行连接代码请注意端点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}
});

这是服务器的一个片段,完成了获取访问令牌的过程:

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;
  }
};

并利用令牌获取用户身份:

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});
  }
};

github上账户,GitHub的包装应尽可能引用非常有帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

来自Meteor js服务器的推文

来自分类Dev

Meteor.js-服务器上的全局事件?

来自分类Dev

来自Meteor js服务器的推文

来自分类Dev

使用Meteor和Meteor Up时如何监视服务器端日志

来自分类Dev

如何从Meteor.js中重新启动Meteor服务器

来自分类Dev

meteor.js和React-SEO的服务器渲染是否可以直接使用?

来自分类Dev

使用模板加载作为服务器方法Meteor js的触发器

来自分类Dev

XMPP服务器和自定义API

来自分类Dev

域和自定义DNS服务器

来自分类Dev

当在服务器上定义变量时,Meteor.call返回“未定义”结果

来自分类Dev

同一服务器上的Meteor.js和Apache / Nginx服务于不同的域名

来自分类Dev

同一服务器上的Meteor.js和Apache / Nginx服务于不同的域名

来自分类Dev

使用angular-meteor通过Meteor.methods在服务器和客户端之间发送数组

来自分类Dev

使用Meteor和Meteorhacks:SSR和Iron-Router进行服务器端渲染

来自分类Dev

Iron Router和Meteor中的服务器端路由

来自分类Dev

Meteor JS在客户端html上模拟服务器命令行

来自分类Dev

将服务器变量设置为mongo集合Meteor.js中保存的数据

来自分类Dev

如何在Meteor.js中从服务器注销用户?

来自分类Dev

从服务器回调后Meteor.js自动订阅

来自分类Dev

服务器上的Meteor.loginWithToken()

来自分类Dev

服务器端包括(SSI)和grunt connect Web服务器

来自分类Dev

服务器端包括(SSI)和grunt connect Web服务器

来自分类Dev

从Node JS connect.js获取服务器的端口

来自分类Dev

Meteor.js根据集合对象的值和用户角色自定义发布

来自分类Dev

自定义node.js Web服务器未完成加载CSS和JavaScript

来自分类Dev

在自定义域上使用OpenID用户API时,App Engine上出现500服务器错误

来自分类Dev

在自定义域上使用OpenID用户API时,App Engine上出现500服务器错误

来自分类Dev

从客户端上的Meteor.call获取未定义,但在服务器变量上包含数据

来自分类Dev

将Meteor部署在我自己的服务器上,但是在版本控制仓库中?和MongoHQ

Related 相关文章

  1. 1

    来自Meteor js服务器的推文

  2. 2

    Meteor.js-服务器上的全局事件?

  3. 3

    来自Meteor js服务器的推文

  4. 4

    使用Meteor和Meteor Up时如何监视服务器端日志

  5. 5

    如何从Meteor.js中重新启动Meteor服务器

  6. 6

    meteor.js和React-SEO的服务器渲染是否可以直接使用?

  7. 7

    使用模板加载作为服务器方法Meteor js的触发器

  8. 8

    XMPP服务器和自定义API

  9. 9

    域和自定义DNS服务器

  10. 10

    当在服务器上定义变量时,Meteor.call返回“未定义”结果

  11. 11

    同一服务器上的Meteor.js和Apache / Nginx服务于不同的域名

  12. 12

    同一服务器上的Meteor.js和Apache / Nginx服务于不同的域名

  13. 13

    使用angular-meteor通过Meteor.methods在服务器和客户端之间发送数组

  14. 14

    使用Meteor和Meteorhacks:SSR和Iron-Router进行服务器端渲染

  15. 15

    Iron Router和Meteor中的服务器端路由

  16. 16

    Meteor JS在客户端html上模拟服务器命令行

  17. 17

    将服务器变量设置为mongo集合Meteor.js中保存的数据

  18. 18

    如何在Meteor.js中从服务器注销用户?

  19. 19

    从服务器回调后Meteor.js自动订阅

  20. 20

    服务器上的Meteor.loginWithToken()

  21. 21

    服务器端包括(SSI)和grunt connect Web服务器

  22. 22

    服务器端包括(SSI)和grunt connect Web服务器

  23. 23

    从Node JS connect.js获取服务器的端口

  24. 24

    Meteor.js根据集合对象的值和用户角色自定义发布

  25. 25

    自定义node.js Web服务器未完成加载CSS和JavaScript

  26. 26

    在自定义域上使用OpenID用户API时,App Engine上出现500服务器错误

  27. 27

    在自定义域上使用OpenID用户API时,App Engine上出现500服务器错误

  28. 28

    从客户端上的Meteor.call获取未定义,但在服务器变量上包含数据

  29. 29

    将Meteor部署在我自己的服务器上,但是在版本控制仓库中?和MongoHQ

热门标签

归档