云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

腾讯云_京东智联云_试用

小七 141 0

华为服务器_美国_大数据具体是什么

本教程的目标是向您展示如何使用openidconnect和oauth2.0保护电子应用程序。您将学习如何从您的电子应用程序认证用户并向受保护的端点发出API请求。为此,您将使用节点.jsexpressapi与一个端点,以测试您的用户身份验证和授权系统的有效性。您不需要成为openidconnect和OAuth专家来跟随本教程,因为这些说明将指导您完成整个过程。事实上,当您使用符合这些标准(如Auth0)的Identity-as-a-Service(IDaaS)平台时,保护应用程序的安全就更容易了。但是,网站用云服务器,如果你想深入了解OpenID连接,请查看免费电子书!了解现代世界中处理身份验证的实际标准。下载免费电子书$('.oidc手册按钮a')。单击(功能(e){metricsLib.track('博客:点击:oidc手册广告");});向Auth0注册电子应用程序要将Auth0与Electron一起使用,您需要向Auth0注册您的Electron应用程序,并在它们之间建立通信桥。如果您还没有Auth0帐户,现在可以注册一个免费帐户。首先,打开Auth0仪表板的Applications部分,然后单击createapplication。在显示的对话框中:为应用程序提供一个名称,例如"Auth0 Electron Demo"。选择Native作为应用程序类型。单击"创建"按钮。完成后,Auth0应用程序页面将加载。在那里,单击"设置"选项卡,将Auth0配置为与电子应用程序通信。搜索"允许的回调URL"字段,并将以下URL作为其值:您可能想知道这个URL是什么以及为什么需要它。使用Auth0进行用户身份验证时,不需要构建登录或注册表单。当用户单击用户界面中的登录按钮时,您的电子应用程序会将他们重定向到Auth0通用登录页面,Auth0将在该页面执行身份验证过程。完成后,Auth0将调用允许的回调URL,将用户带回应用程序并通知其结果:身份验证是否成功?出于安全原因,Auth0将只调用在Allowed Callback url字段中注册的url。尽管有URL结构,您不需要真正的服务器来监听它;您只需要让您的电子应用程序监听它,稍后您将了解到这一点。这就是注册电子应用程序所需的所有配置。单击"设置"页面底部的"保存更改"按钮以完成此过程。请将此页保持打开状态,因为您需要很快从中复制一些值,以便在应用程序中集成Auth0。开始一个电子项目现在您已经配置了Auth0,您可以集中学习如何保护电子应用程序。您将构建一个简单的电子应用程序,它使用授权服务器(Auth0)对用户进行身份验证,并授权应用程序从资源服务器(外部API)访问受保护的数据。因此,打开一个新的终端窗口并执行以下命令来创建一个目录来托管Electron应用程序并在其中初始化npm项目:#为你的电子应用创建一个目录开放电子公司#进去吧cd电子openid oauth#使用默认属性初始化npmnpm初始-y之后,打开包.json将其内容替换为以下内容:{"name":"electron-openid-oauth-2","version":"1.0.0","说明":"","主":主.js","脚本":{"start":"electron./"},"关键字":[],"作者":"","license":"ISC"}再进行你的应用程序将只有三个依赖项:axios:一个基于promise的HTTP客户端,用于浏览器和节点.js.electron:electron框架本身,因此您可以运行应用程序。jwt decode:一个库,使您的应用程序能够对JSON Web令牌(jwt)进行解码。要安装这些依赖项,请发出以下命令:#你需要电子作为开发依赖npm i-D电子#另外两个是正常的依赖关系npm i axios jwt解码在下一节中,您将使用这些库来构建您的电子应用程序。注意,Electron是作为开发依赖项安装的。这是安装Electron的首选方法,因为这种方法允许您使用不同版本的框架处理多个应用程序。管理电子环境中的不同环境在本教程中,您不会让应用程序在其他环境中运行。然而,避免硬编码配置变量总是一个好主意,这样你就不会把它们推到版本控制系统中,云服务器哪里好,这样会暴露一些凭证,或者使贡献者的生活更加困难。因此,要定义环境变量,请创建一个名为env的文件-变量.json在根项目目录下,并将以下对象添加到其中:{"auth0Domain":"","clientId":"","apiIdentifier":""}auth0Domain和clientId对应于Auth0应用程序的"设置"中的域和客户端ID值,该应用程序是为注册电子应用程序而创建的。您还将使用apidentifier从受Auth0保护的API访问数据。稍后将定义此变量。请记住从版本控制系统中排除此文件。例如,如果您使用的是Git,网云服务器,请添加名称env-变量.json进入.gitignore。在电子中保存数据作为成功用户身份验证的结果,Auth0可以向您的Electron应用程序发送三种类型的令牌:访问令牌、ID令牌和刷新令牌。然后,微博淘客,当你的用户关闭你的应用程序并重新打开它(或者当访问令牌或ID令牌过期时),你的应用程序可以使用刷新令牌来获取另外两个版本的新版本,而无需要求用户再次登录。因此,您需要为您的电子应用程序提供一种在磁盘上安全存储或保存刷新令牌的方法;否则,当用户关闭并重新打开时,您的应用程序将无法访问它们。要以电子方式存储数据,可以使用keytar节点.js模块。如官方文件所述,keytar是:"本地节点模块,用于获取、添加、替换和删除系统密钥链中的密码。在macOS上,密码由Keychain管理,在Linux上,密码由Secret Service API/libsecret管理,在Windows上,密码由Credential Vault管理。"-https://github.com/atom/node-keytar要安装keytar,请在终端上发出以下命令:npm i凯塔你很快就会知道它将如何使用。"了解如何使用@openid Connect和OAuth 2.0保护@electronjs应用程序"在推特上留言电子认证用户下一步是创建一个负责身份验证过程的服务。该认证服务主要提供以下功能:getAuthenticationURL:返回用户必须访问的授权服务器的完整URL才能进行身份验证。refreshTokens:验证当前用户是否有可用的刷新令牌,如果有,则将其交换为新的访问令牌。loadTokens:解析身份验证过程完成后回调的URL,以获取代码查询参数,您可以使用该参数获取不同的令牌(访问令牌、刷新令牌和ID令牌)。因此,在根项目目录下创建一个名为services的目录,并用一个名为auth的文件填充它-服务.js有以下代码://服务/授权-服务.jsconst jwtDecode=require("jwt解码");const axios=需要("axios");const url=require("url");const envVariables=需要("../env variables");const keytar=需要("keytar");const os=要求("os");const{apiIdentifier,auth0Domain,clientId}=envVariables;const重定向URI="http://localhost/callback";const keytarService="电子openid oauth";const keytarAccount=操作系统用户信息().用户名;让accessToken=null;设profile=null;让refreshToken=null;函数getAccessToken(){返回accessToken;}函数getProfile(){收益曲线;}函数getAuthenticationURL(){返回("https://"+Auth0域+"/授权?"+"scope=openid profile脱机访问&"+"响应类型=代码&"+客户端id"+客户ID+"&" +"重定向\u uri="+重定向URI);}异步函数refreshTokens(){const refreshToken=等待keytar.getPassword(keytarService,keytarAccount);if(refreshToken){常量刷新选项={方法:"POST",url:`https://${auth0Domain}/oauth/token`,头:{"content-type":"application/json"},数据:{grant_type:"刷新_token",客户机号:clientId,刷新令牌:refreshToken,},};试试看{const response=等待axios(刷新选项);访问令牌=response.data.access_令牌;profile=jwtDecode(response.data.id_令牌);}捕获(错误){等待注销();抛出错误;}}其他{抛出新错误("没有可用的刷新令牌。");}}异步函数loadTokens(callbackURL){const urlParts=url.parse(callbackURL,true);常量查询=urlParts.query;常量交换选项={grant_type:"授权码",客户机号:clientId,代码:查询代码,重定向\u uri:redirectUri,};常量选项={方法:"POST",url:`https://${auth0Domain}/oauth/token`,标题:{"content-type":"应用程序/json",},数据:JSON.stringify(交换选项),};试试看{const response=等待axios(选项);访问令牌=response.data.access_令牌;profile=jwtDecode(response.data.id_令牌);刷新令牌=response.data.refresh_令牌;if(refreshToken){等待keytar.setPassword(keytarService,小程序建站,keytarAccount,refreshttoken);}}捕获(错误){等待注销();抛出错误;}}异步乐趣