【问题标题】:Decoding a Openid token with the openid-client library使用 openid-client 库解码 Openid 令牌
【发布时间】:2021-07-11 00:47:59
【问题描述】:

我正在使用 openid-client 库,并且我让整个登录过程正常工作(Yay Me)。

然后当它回调到服务器时,我不知道如何处理返回的内容。我假设我可以解码代码,但不确定如何。

const { Issuer, generators } = require('openid-client');
var idIssuer;
var client;

const login = async (req, res)=> {


    if (!idIssuer){
        idIssuer = await Issuer.discover(process.env.LOGIN_URI);
    }

    if (!client){

    client = new idIssuer.Client({
        client_id: process.env.LOGIN_APPID,
        client_secret: process.env.LOGIN_APPSECRET,
        redirect_uris: [process.env.LOGIN_REDIRECT_URI],
        response_types: ['code'],

      });
    }


    let url = client.authorizationUrl({
        scope:process.env.LOGIN_SCOPES,
        state:  base64url(JSON.stringify({ state: process.env.LOGIN_APPID })),
      });

      res.redirect(url);

}

const callBack = async  (req, res)=>{
    if (!idIssuer){
        idIssuer = await Issuer.discover(process.env.LOGIN_URI);
    }

    if (!client){

    client = new idIssuer.Client({
        client_id: process.env.LOGIN_APPID,
        client_secret: process.env.LOGIN_APPSECRET,
        redirect_uris: [process.env.LOGIN_REDIRECT_URI],
        //response_types: ['code'],

      });
    }

    console.log(req.query);
    /*
    {
        code: 's5LI-16HvCSnmi94Q74UEGmlNtE6utmGY7YaOV72s_k.C6Vt2v8uL4loPeq3YGA8bRyR8dVpU1wAEgHyLZadMhQ',
        scope: 'openid',
        state: 'eyJzdGF0ZSI6IlZwWkVIZVhYNnczbDh0R3JBZHFFdVZBdnlKV2NlenZVRE9FRzVDS1BRcnpZQjhkVWs4MHNHMmVoOUFMMHp0R2NRTWdMNVJtQV9MOEhpZjEzcEZTLXFBPT0ifQ'
      }
      */
}

【问题讨论】:

    标签: node.js oauth-2.0 openid


    【解决方案1】:

    使用取回的code,再次调用OAuth服务器,换取真实的访问权限和IDtoken。

    例如

    POST /connect/token CONTENT-TYPE application/x-www-form-urlencoded

    client_id=client1&
    client_secret=secret&
    grant_type=authorization_code&
    code=hdh922&
    redirect_uri=https://myapp.com/callback
    

    【讨论】:

      【解决方案2】:

      您可以轻松关注quick-start。接下来你要做的是获取回调参数并使用client.callback() 获取 ID 令牌、访问令牌和可选的刷新令牌。

      【讨论】:

        猜你喜欢
        • 2019-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-28
        • 1970-01-01
        • 2018-10-26
        • 2011-09-04
        • 1970-01-01
        相关资源
        最近更新 更多