oauth-2.0 我可以从命令行CLI工具运行OIDC流吗?

iyfamqjs  于 2022-10-31  发布在  其他
关注(0)|答案(2)|浏览(235)

我正在运行一个OIDC流,以获取单页面应用程序上的访问和ID令牌(我使用OneLogin,但这可能不是很相关,它是一个普通的OIDC流)。
我想从命令行工具提供相同的功能(包括调用相同的后端)。是否有一个标准的方法来获得访问令牌,就像我在浏览器中做的那样?
我会考虑任何解决方案,包括在浏览器中完成部分流程,OIDC的替代品等。

ao218c7q

ao218c7q1#

控制台应用程序是本机应用程序,可以运行代码流并使用RFC 8252中的一种技术侦听OAuth响应:

  • 环回URL,例如http:/localhost:8000/callback
  • 专用URI方案URL,例如x-myapp:/callback

下面是第一种情况下的部分Javascript代码。第二种情况的示例请参见我的desktop code sample

import Http from 'http';
import Opener from 'opener';

export async function login(): Promise<string> {

    const codeVerifier = generateRandomString();
    const codeChallenge = generateHash(codeVerifier);
    const state = generateRandomString();
    const authorizationUrl = buildAuthorizationUrl(state, codeChallenge);

    return new Promise<string>((resolve, reject) => {

        let server: Http.Server | null = null;
        const callback = async (request: Http.IncomingMessage, response: Http.ServerResponse) => {

            if (server != null) {

                response.write('Login completed for the console client ...');
                response.end();
                server.close();
                server = null;

                try {

                    // Swap the code for tokens
                    const accessToken = await redeemCodeForAccessToken(request.url!, state, codeVerifier);
                    resolve(accessToken);

                } catch (e: any) {
                    reject(e);
                }
            }
        }

        server = Http.createServer(callback);
        server.listen(loopbackPort);

        Opener(authorizationUrl);
    });
}
slmsl1lt

slmsl1lt2#

Onelogin有一些工具可以在这个过程中提供帮助。(我是OIDC工程团队的一员)。您可以通过OIDC Inspector Tool完成部分过程。
这可能无法给予您所需要的内容,编写您自己的脚本可能是最好的选择。
如果我能提供更多帮助,请随时联系我们

相关问题