我正在运行一个OIDC流,以获取单页面应用程序上的访问和ID令牌(我使用OneLogin,但这可能不是很相关,它是一个普通的OIDC流)。我想从命令行工具提供相同的功能(包括调用相同的后端)。是否有一个标准的方法来获得访问令牌,就像我在浏览器中做的那样?我会考虑任何解决方案,包括在浏览器中完成部分流程,OIDC的替代品等。
ao218c7q1#
控制台应用程序是本机应用程序,可以运行代码流并使用RFC 8252中的一种技术侦听OAuth响应:
下面是第一种情况下的部分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); }); }
slmsl1lt2#
Onelogin有一些工具可以在这个过程中提供帮助。(我是OIDC工程团队的一员)。您可以通过OIDC Inspector Tool完成部分过程。这可能无法给予您所需要的内容,编写您自己的脚本可能是最好的选择。如果我能提供更多帮助,请随时联系我们
2条答案
按热度按时间ao218c7q1#
控制台应用程序是本机应用程序,可以运行代码流并使用RFC 8252中的一种技术侦听OAuth响应:
下面是第一种情况下的部分Javascript代码。第二种情况的示例请参见我的desktop code sample。
slmsl1lt2#
Onelogin有一些工具可以在这个过程中提供帮助。(我是OIDC工程团队的一员)。您可以通过OIDC Inspector Tool完成部分过程。
这可能无法给予您所需要的内容,编写您自己的脚本可能是最好的选择。
如果我能提供更多帮助,请随时联系我们