我们有一个使用Active Directory对我们的用户进行身份验证的mvc应用程序.我们正在利用System.DirectoryServices并使用以PricipalContext进行身份验证:
_principalContext.ValidateCredentials(userName, pass, ContextOptions.SimpleBind);
但是,此方法仅返回bool,我们希望返回更好的消息,甚至将用户重定向到密码重置屏幕,例如:
因此,如果用户无法登录,我们会调用NetValidatePasswordPolicy以查看用户无法登录的原因.这似乎运行良好,但我们意识到NET_API_STATUS.NERR_PasswordMustChange无论Active Directory用户的状态如何,此方法都只返回.
我有这个同样的问题,发现的唯一的例子来自崇高的语音插件在这里.我使用的代码如下:
var outputPointer = IntPtr.Zero;
var inputArgs = new NET_VALIDATE_PASSWORD_CHANGE_INPUT_ARG { PasswordMatched = false, UserAccountName = username };
inputArgs.ClearPassword = Marshal.StringToBSTR(password);
var inputPointer = IntPtr.Zero;
inputPointer = Marshal.AllocHGlobal(Marshal.SizeOf(inputArgs));
Marshal.StructureToPtr(inputArgs, inputPointer, false);
using (new ComImpersonator(adImpersonatingUserName, adImpersonatingDomainName, adImpersonatingPassword))
{
var status = NetValidatePasswordPolicy(serverName, IntPtr.Zero, NET_VALIDATE_PASSWORD_TYPE.NetValidateAuthentication, inputPointer, ref outputPointer);
if (status == NET_API_STATUS.NERR_Success)
{
var outputArgs = (NET_VALIDATE_OUTPUT_ARG)Marshal.PtrToStructure(outputPointer, typeof(NET_VALIDATE_OUTPUT_ARG));
return outputArgs.ValidationStatus;
} …Run Code Online (Sandbox Code Playgroud) 当我将实体模型添加到我的解决方案时,我收到错误3007.
我找到了这些链接:
关于此错误:
错误1错误3007:从第89,94行开始映射片段中的问题:非主键列[Person_ID]正在两个片段中映射到不同的概念侧属性 - 数据不一致是可能的,因为相应的概念侧属性可以独立修改.
他们的回答:我同意他们的结论,即只需删除标量属性Person_ID并保留导航属性我的问题就解决了.然而,由于我正在动态构建我的数据库并且我的实体经常更新,因此这不是很可扩展.我不希望每次更新它时都要经历并清理我的实体.
我的问题:有没有办法通过纠正EF构建实体的方式来修复错误?或者有没有办法通过代码删除标量属性?也许甚至有一些我可以忽视的选择.
建立
在EC2实例上运行的CloudWatch Agent会将审核日志报告给CloudWatch.CloudWatch中的度量标准筛选器会在报告日志时创建成功登录,登录失败等指标.
问题
通过度量标准筛选器创建的度量标准不会分配维度,因此我无法通过InstanceId查询CloudWatch获取一组度量标准统计信息.这非常有用,因为我想知道每台计算机的审核指标而不是每个日志组.
评论
使用该put-metric-data命令可以轻松附加尺寸.我可以使用InstanceId的维度标记指标,然后使用仅检索这些指标get-metric-statistics.使用度量标准过滤器+ CloudWatch代理设置无法实现此类功能吗?什么是可能的解决方法?
我正在编写一个带参数的函数,该参数需要一个TEntity类型.我想能够在运行时传递一个特定的类型,但我无法编译它:
public LoadOperation LoadQuery(EntityQuery<???> query)
{
LoadOperation loadOperation = DomainContext.Load(query,LoadBehavior.MergeIntoCurrent, false);
return loadOperation;
}
Run Code Online (Sandbox Code Playgroud)
不编译的代码如下所示:
EntityQuery<Person> q = DomainContext.GetPerson();
LoadQuery(q);
Run Code Online (Sandbox Code Playgroud)
我尝试了不同的工作来完成这项工作,但我不知所措.我需要做什么?
我正在尝试创建一个将生产代码部署到一个单独账户的AWS CodePipeline。该代码包含一个lambda函数,该函数使用sam模板和cloudformation进行设置。我目前将它部署到同一帐户,没有错误。我添加了另一个阶段,该阶段具有手动批准操作,批准后应该部署到另一个帐户。失败并显示以下错误:
不允许跨帐户传递角色(服务:AmazonCloudFormation;状态代码:403;错误代码:AccessDenied;请求ID:d880bdd7-fe3f-11e7-8a8c-7dcffeae19ae)
我在生产帐户中扮演一个角色,该帐户与建立管道的开发帐户具有信任关系。我提供了管道角色和生产角色管理员策略,只是为了确保这不是策略问题。我在本演练中使用该技术编辑了管道。由于他们设置的场景与我正在做的稍有不同,因此我会随意地浏览本演练。
我的管道中的deploy部分如下所示:
{
"name": "my-stack",
"actionTypeId": {
"category": "Deploy",
"owner": "AWS",
"provider": "CloudFormation",
"version": "1"
},
"runOrder": 2,
"configuration": {
"ActionMode": "CHANGE_SET_REPLACE",
"Capabilities": "CAPABILITY_IAM",
"ChangeSetName": "ProductionChangeSet",
"RoleArn": "arn:aws:iam::000000000000:role/role-to-assume",
"StackName": "MyProductionStack",
"TemplatePath": "BuildArtifact::NewSamTemplate.yaml"
},
"outputArtifacts": [],
"inputArtifacts": [
{
"name": "BuildArtifact"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我可以使用控制台承担生产帐户中的角色。我不确定passrole有何不同,但是从我读过的所有内容来看,它都需要相同的假定角色信任关系。
如何为跨帐户管道配置IAM?
amazon-web-services aws-cloudformation amazon-iam aws-codepipeline
我有一长串的包括:
.Include("x")
.Include("y")
.Include("z")
.Include("z.w")
.Include("z.v")
Run Code Online (Sandbox Code Playgroud)
我想在三个不同的查询中使用此列表.如何将这些列入列表并在我的所有查询中使用该列表,以免重复自己.