昨天,我编写并运行了一个python script,它执行一个shellusing subprocess.Popen(command.split())where命令是字符串,它构成了.sh脚本及其参数.这个脚本工作正常,直到昨天.今天,我运行相同的脚本,现在我不断遇到这个错误.
p=subprocess.Popen(shell_command.split())
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 8] Exec format error
Run Code Online (Sandbox Code Playgroud)
我知道在提出这个问题之前有过类似的问题,但在我的情况下,我尝试了一切不能解决我目的的问题.使用shell=True不起作用,因为我的shell脚本调用另一个shell脚本,在此脚本之前必须设置一些环境才能运行该脚本.我严重陷入困境.我只是重启我的系统一次.我在用ubuntu 12.04
编辑:
import subprocess
import os
import sys
arg1=sys.argv[1]
arg2=sys.argve[2]
shell_command = 'my_path/my_shell.sh ' + arg1 + ' '+ arg2
P = subprocess.Popen(shell_command.split())
P.wait()
Run Code Online (Sandbox Code Playgroud)
my_shell.sh:
arg1=$1
arg2=$2
cd $TOP
setup the environment and run shell script
build the kernel ...
execute shell command .....
Run Code Online (Sandbox Code Playgroud) 我试图弄清楚如何授权使用Azure Active Directory B2C中的组.我可以通过用户授权,例如:
[Authorize(Users="Bill")]
Run Code Online (Sandbox Code Playgroud)
然而,这不是很有效,我看到很少用例.另一种解决方案是通过角色授权.但是由于某些原因,似乎并没有wowrk.例如,如果我为用户提供"全局管理员"角色,请尝试:
[Authorize(Roles="Global Admin")]
Run Code Online (Sandbox Code Playgroud)
这是行不通的.有没有办法通过群组或角色进行授权?
我已经能够为我正在测试的租户正确设置注册/登录策略.我已设置重置密码属性,以允许每个人使用他们的电子邮件重置密码.目前,用户使用他们的电子邮件(也是他们的用户名),名字和姓氏进行注册.
但是,当我点击登录页面上的"我忘记密码"链接时,它只是将我重定向回同一页面.这里有什么我想念的吗?
让我说我想这样做:
var dashboard = {};
var page = "index";
$('.check').click(function(){
$(this).toggleClass("active").siblings().slideToggle('slow', function() {
dashboard['pages'][page][$(this).closest('li').attr("id")]['show'] = $(this).is(":hidden") ? 'collapsed' : 'expanded';
});
}
Run Code Online (Sandbox Code Playgroud)
我收到一个错误说:
Dashboard.pages未定义
有没有动态添加pages和后续的孩子,而不必做检查的工作,看看它是否先被定义,然后如果它没有做:
dashboard['pages'] = {};
Run Code Online (Sandbox Code Playgroud)
因为有时它们可能已经存在,我不想首先检查树,我只想根据需要构建分支
编辑
我改变pagename,以page显示该网页的名称会改变,我也想指出的是,该页面可能真的什么太.这个想法是你有任何对象可以包含带参数的对象,而不检查分支是否存在
它看起来像$extend所说的那样只是不确定它是如何工作的.得到我的头脑.
是否内置支持在Azure容器实例上启用SSL?如果没有,我们可以连接到像Lets Encrypt这样的SSL提供商吗?
我们希望将Azure AD B2C用于我们的Web应用程序,以允许用户使用"本地"帐户/密码登录或使用他们的社交帐户(Facebook等). https://docs.microsoft.com/azure/active-directory-b2c/active-directory-b2c-overview
但是,在此应用程序中,我们可能会定位组织,因此我们还希望与公司现有的Azure AD公司帐户集成.这样,用户无需创建新帐户即可使用其现有的公司帐户.
事实证明,Azure AD B2C中有一个(新)功能,允许您使用如下所述的自定义策略显式链接到外部Azure AD帐户:https://docs.microsoft.com/azure/active-目录B2C /主动目录B2C -设置- AAD定制
不幸的是,这只有在我们事先知道我们需要链接哪些外部公司并添加特定配置时才有效.它还泄漏有关谁正在使用该应用程序的信息,因为公司名称在登录页面上列为选项.
我也看过Azure AD B2B功能,但我认为这也不合适.
我们真正喜欢的是Azure AD B2C为(公司)Microsoft帐户提供通用登录,该帐户检测该电子邮件地址是否已在任何Azure AD系统中处理; 如果是,则它将身份验证委派给该系统,但如果不是,则它将回退到Azure AD B2C本地帐户.
此通用登录已用于访问标准Microsoft应用程序,例如其门户.有没有人知道这是否可以在Azure AD B2C中实现,或者是否有可能的时间范围?是否有任何替代系统可以提供类似的功能?
我有一个使用Azure AD B2C登录的Asp.Net核心Web应用程序.当我http://localhost:54678/在应用程序和Azure门户中的设置中使用回复URL 在本地测试它工作正常,我可以登录并且用户进行身份验证没有问题.但是,一旦我将回复网址更新为该应用的网址https://musdqapp.com,我就会收到以下错误:
message =相关失败
这就是我设置的方式 OpenIdConnectOptions
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions()
{
Authority = "https://login.microsoftonline.com/tfp" + "/ticketfortb2c.onmicrosoft.com" + "/B2C_1_ticket-fort" + "/v2.0",
ClientId = "client_is", //the id of the b2c application
ClientSecret = "secret",
ResponseType = OpenIdConnectResponseType.IdToken,
UseTokenLifetime = true,
PostLogoutRedirectUri = "https://musdqapp.com/",
Events = new OpenIdConnectEvents()
{
OnTokenValidated = SecurityTokenValidated,
OnRemoteFailure = OnRemoteFailure
}
});
Run Code Online (Sandbox Code Playgroud)
在Azure门户网站上,我将B2C应用程序的回复网址设置为 https://musdqapp.com/signin-oidc
我很难尝试使用Azure AD B2C来验证My Web API.我将从一些背景开始
我创建了使用Azure AD B2C对用户进行身份验证的移动应用程序.我正在创建一个显示此URL的WebView:

用户被要求登录azure广告,如果登录数据成功,我收到包含访问令牌的响应 - 这部分顺利进行,一切正常.
现在我想创建后端Web Api.我创建了ASP NET Core Web应用程序,它允许我选择身份验证方法.我选择Azure AD身份验证,以便模板为我生成所有必需的数据.代码中的相关部分在这里:

我更新了所有必需的配置属性以匹配我的azure设置.此时我希望能够使用我在移动应用程序上收到的访问令牌来调用API.我在本地运行移动应用程序,登录,接收访问令牌,复制它并尝试使用邮递员(带有授权标题"Bearer ...")来调用我的web api(在IIS express中托管).不幸的是没有运气 - 我收到401以下标题:
Bearer error ="invalid_token",error_description ="找不到签名密钥"
我认为令牌足以授权API - 我理解这是OAuth的一个重点.我错过了什么吗?我应该有一些额外的配置吗?我注意到配置缺少登录策略(这似乎是AD B2C名称所要求的,所以我尝试添加:
var validationParameters = new TokenValidationParameters
{
AuthenticationType = "MY_POLICY",
};
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
Authority = Configuration["Authentication:AzureAd:AADInstance"] + Configuration["Authentication:AzureAd:TenantId"],
Audience = Configuration["Authentication:AzureAd:Audience"],
TokenValidationParameters = validationParameters
});
Run Code Online (Sandbox Code Playgroud)
但这也行不通.将不胜感激任何帮助.
编辑
我在Visual Studio日志中发现以下错误:
持票人未经过认证.失败消息:IDX10501:签名验证失败.无法匹配'kid':'...'
作为企业,我们希望使用Azure AD B2C,并且我们有内部和外部用户。
Azure AD 帮助我们管理我们的 Azure 用户、企业用户,我们甚至可以使用 x@.onmicrosoft.com 电子邮件添加用户。
当我们想为我们的消费者使用 Azure AD B2C 时。所以我们有 2 个选择来添加我们的用户,即本地用户和外部用户(Facebook、Google 等)
如果本地用户属于我们公司,则可以使用 Azure AD B2C 门户创建用户。
但是当我们尝试创建拥有另一种电子邮件的 Azure AD B2C 用户时,我们需要使用我们自己的应用程序,该应用程序正在使用 Graph API。(即 Azure 门户限制)
问题是我们很难在登录后获取用户值,因为他们是使用 Gmail 或 x 电子邮件的本地用户。
我们使用 MSAL 来获取相关信息,而不是 ADAL。
我们已经启用了范围并启用了 API 访问,但这是我们得到的错误。
获取弹出窗口:AADB2C90055:请求中提供的范围“openid email openid profile”必须指定一个资源,例如“ https://example.com/calendar.read ”。
关联 ID:86d6ff41-1cef-4ba1-9b26-2aa281c92ccd
时间戳:2017-09-15 10:22:20Z
invalid_request 登录时出错:AADB2C90117:不支持请求中提供的范围“user_impersonation”。
关联 ID:785c6487-cd7f-4750-a769-deb477cb4ba4
时间戳:2017-09-15 10:32:39Z
:无效请求
获取弹出窗口时出错:AADB2C90055:请求中提供的范围“电子邮件 …
azure azure-active-directory azure-ad-graph-api azure-ad-b2c
我有2个租户:
我的 web 应用程序位于租户 A 上,我在租户 B 上使用 Azure AD 在门户上配置了身份验证。
在租户 BI 上,仅使用一项不需要管理员同意的权限注册了应用程序:Windows Azure Active Directory > 登录并读取用户配置文件。
当用户登录时,他收到以下错误:
AADSTS90093:此操作只能由管理员执行。注销并以管理员身份登录或联系您组织的管理员之一。
我认为不应引发此错误,因为应用程序所需的唯一权限不需要管理员。
编辑
这是我在未登录时尝试访问应用程序时重定向到的 URL
https://login.microsoftonline.com/d6ac45af-3289-4f79-a826-27824e1c467d/oauth2/authorize?response_type=code+id_token&redirect_uri=https%3A%2F%2Ftechnipfmc-tools-app-test.azurewebsites.net%2F.auth%2Flogin%2Faad%2Fcallback&client_id=d340f0ed-5eb3-43e8-9a50-c449649f3ee1&scope=openid+profile+email&response_mode=form_post&nonce=1895ec0ffef64447bbb712bdae61c7fb_20170521070654&state=redir%3D%252F
Run Code Online (Sandbox Code Playgroud)
编辑 2
我在这里找到了一个解决方案:
作为管理员,您还可以代表租户中的所有用户同意应用程序的委派权限。这将阻止为租户中的每个用户显示同意对话框。您可以从应用程序页面的 Azure 门户执行此操作。从您的应用程序的设置边栏选项卡中,单击所需的权限,然后单击授予权限按钮。
我不知道为什么必须这样做,因为我只使用不需要管理员同意的权限。
azure-ad-b2c ×6
azure ×5
arrays ×1
asp.net ×1
asp.net-core ×1
asp.net-mvc ×1
azure-ad-b2b ×1
c# ×1
javascript ×1
jquery ×1
json ×1
linux ×1
python ×1
shell ×1