小编joh*_*oop的帖子

从C#调用NetValidatePasswordPolicy始终返回密码必须更改

我们有一个使用Active Directory对我们的用户进行身份验证的mvc应用程序.我们正在利用System.DirectoryServices并使用以PricipalContext进行身份验证:

_principalContext.ValidateCredentials(userName, pass, ContextOptions.SimpleBind);

但是,此方法仅返回bool,我们希望返回更好的消息,甚至将用户重定向到密码重置屏幕,例如:

  1. 用户被锁定在帐户之外.
  2. 用户密码已过期.
  3. 用户需要在下次登录时更改密码.

因此,如果用户无法登录,我们会调用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)

c# com interop active-directory

7
推荐指数
1
解决办法
1167
查看次数

添加实体模型时出现错误3007

当我将实体模型添加到我的解决方案时,我收到错误3007.

我找到了这些链接:

好的探索

简短的回答

关于此错误:

错误1错误3007:从第89,94行开始映射片段中的问题:非主键列[Person_ID]正在两个片段中映射到不同的概念侧属性 - 数据不一致是可能的,因为相应的概念侧属性可以独立修改.

他们的回答:我同意他们的结论,即只需删除标量属性Person_ID并保留导航属性我的问题就解决了.然而,由于我正在动态构建我的数据库并且我的实体经常更新,因此这不是很可扩展.我不希望每次更新它时都要经历并清理我的实体.

我的问题:有没有办法通过纠正EF构建实体的方式来修复错误?或者有没有办法通过代码删除标量属性?也许甚至有一些我可以忽视的选择.

entity-relationship entity-framework

6
推荐指数
2
解决办法
9517
查看次数

如何使CloudWatch代理和指标筛选器报告维度

建立

在EC2实例上运行的CloudWatch Agent会将审核日志报告给CloudWatch.CloudWatch中的度量标准筛选器会在报告日志时创建成功登录,登录失败等指标.

问题

通过度量标准筛选器创建的度量标准不会分配维度,因此我无法通过InstanceId查询CloudWatch获取一组度量标准统计信息.这非常有用,因为我想知道每台计算机的审核指标而不是每个日志组.

评论

使用该put-metric-data命令可以轻松附加尺寸.我可以使用InstanceId的维度标记指标,然后使用仅检索这些指标get-metric-statistics.使用度量标准过滤器+ CloudWatch代理设置无法实现此类功能吗?什么是可能的解决方法?

javascript logging amazon-web-services amazon-cloudwatch

6
推荐指数
1
解决办法
1218
查看次数

如何在C#中设置运行时类型TSomething?

我正在编写一个带参数的函数,该参数需要一个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)

我尝试了不同的工作来完成这项工作,但我不知所措.我需要做什么?

c# entity-framework wcf-ria-services

2
推荐指数
1
解决办法
325
查看次数

AWS CodePipeline错误:不允许跨账户传递角色

我正在尝试创建一个将生产代码部署到一个单独账户的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

2
推荐指数
2
解决办法
6181
查看次数

在linq中创建实体的.Include()列表

我有一长串的包括:

.Include("x")
.Include("y")
.Include("z")
.Include("z.w")
.Include("z.v")
Run Code Online (Sandbox Code Playgroud)

我想在三个不同的查询中使用此列表.如何将这些列入列表并在我的所有查询中使用该列表,以免重复自己.

linq-to-entities entity-framework

0
推荐指数
1
解决办法
496
查看次数