Microsoft Azure登录在electron应用程序中失败
我正在尝试使用集成登录功能 此项目位于Angular-6上,用于使用创建桌面应用程序 除了我创建Microsoft Azure登录在electron应用程序中失败,electron,azure-active-directory,adal,microsoft-teams,Electron,Azure Active Directory,Adal,Microsoft Teams,我正在尝试使用集成登录功能 此项目位于Angular-6上,用于使用创建桌面应用程序 除了我创建*.exe文件时,登录在任何地方都可以正常工作,因为它有一个文件://URL系统。以下是登录过程中输入正确OTP后的登录失败屏幕 我尝试在->Azure Active Directory->应用程序注册->设置->重定向URL下添加一个文件://*回复URL。但系统并没有接受它 我想实现的是,这个电子应用程序应该可以在任何系统(目前是Windows)中运行,而不需要Azure登录 你能帮我决定我能做
*.exe
文件时,登录在任何地方都可以正常工作,因为它有一个文件://URL系统。以下是登录过程中输入正确OTP后的登录失败屏幕
我尝试在->Azure Active Directory->应用程序注册->设置->重定向URL下添加一个文件://*回复URL
。但系统并没有接受它
我想实现的是,这个电子应用程序应该可以在任何系统(目前是Windows)中运行,而不需要Azure登录
你能帮我决定我能做些什么来让这一切顺利吗?看起来这是OAuth的问题。OAuth不支持文件URI方案。几天前我也遇到了同样的问题。有两种方法可以从这里开始:
还有第三种在主进程中使用OAuth和节点进行身份验证的方法。但由于安全原因,仅建议在服务器上使用OAuth登录节点,而不建议在电子应用程序中使用OAuth登录节点。就个人而言,我会选择第二个选项。由于Azure AD不支持文件系统URL,我在Electron应用程序中创建了一个本地服务器并提供静态文件。通过这种方式,Azure的登录页面成功重定向到正确的本地主机URL(它已添加到Azure设置的
重定向URL
)
下面的代码使用中描述的方法。用于在Electron应用程序中创建本地服务器的代码-
const port = 18090; // port number for local server
const appFolder = 'my_app'; // app folder
const staticFolders = './my_app/path-to-files'; // relative path to static files
// required plugins
const http = require('http');
const finalhandler = require('finalhandler');
const serveStatic = require('serve-static');
// serve up public/ftp folder
let serve = serveStatic(staticPath, {'index': ['index.html', 'index.htm', 'default.html']});
// create server
let server = http.createServer(function onRequest(req, res) {
serve(req, res, finalhandler(req, res));
});
server.listen(port); // listen on mentioned port
// Creating a new browser window
function createWindow() {
let win = new BrowserWindow({
... // required options
});
win.loadURL(`http://localhost:${port}/`); // listen to local server
}
现在,您的电子应用程序将侦听本地服务器,而不是文件系统
注意-上述方法不适用于带有
asar
格式文件的生成包。可能有一种可能的方法,我会在找到后添加。由于某些用例,我希望避免使用第二种方法。我能做的最后一件事就是把网站放在某个地方,然后把它加载到Electron中。我又问了一个问题,想了解一下。