我已经为MFA开发了一个自定义凭证提供程序,它运行良好。我通过调用REST API在GetSerialization()方法中执行额外的身份验证检查。现在,如果通过REST API成功验证,我允许用户登录。但是对于验证失败的情况,我想显示错误屏幕,就像一个默认的提供者在用户名或密码不正确的情况下显示的那样(有一个“确定”按钮)。我已经了解,如果登录失败,默认情况下,这是在ReportResult()凭据提供程序中完成的。我可以调用ReportResult()以显示带有“确定”按钮的自定义错误消息吗?当做
编辑:我这样做:
if (SUCCEEDED(HRESULT_FROM_NT(ntsStatus)) && SUCCEEDED(HRESULT_FROM_NT(ntsSubstatus)))
{
SHStrDupW(L"Bad password", ppwszOptionalStatusText);
*pcpsiOptionalStatusIcon = CPSI_ERROR;
}
但屏幕并没有停止。它登录用户。我需要在windows凭据正确但API调用失败时检测场景,因此我需要捕获该状态并显示错误
ReportResult(
NTSTATUS ntsStatus,
NTSTATUS ntsSubstatus,
PWSTR* ppwszOptionalStatusText,
CREDENTIAL_PROVIDER_STATUS_ICON* pcpsiOptionalStatusIcon
)
您可以通过填充ppwszOptionalStatusText
来设置自己的自定义消息。如果需要,还可以将图标设置为PCPSOptionalStatusIcon
中的一个CPSI_错误
,CPSI_警告
或CPSI_成功
。
例如,在检查ntsStatus
之后,您可以像这样进行定制
SHStrDupW(L"Bad password", ppwszOptionalStatusText);
*pcpsiOptionalStatusIcon = CPSI_ERROR;
编辑:
在GetSerialization()
内部,一旦API返回失败,请将CREDENTIAL\u PROVIDER\u GET\u SERIALIZATION\u RESPONSE
设置为not finished。这样地
*pcpgsr=CPGSR_RETURN_NO_CREDENTIAL_FINISHED;
这将停止登录以继续。
编辑2:按照下面的@js.hrt注释,通过使用*pcpgsr=CPGSR_NO_CREDENTIAL_NOT_FINISHED; SHStrDupW(L"坏密码", ppwszOptionalStatusText);*pcpsiOptionalStatusIcon=CPSI_ERROR;在GetSeriize()不使用报告结果显示状态屏幕。
我得试试
*pcpgsr=CPGSR\u无\u凭证\u未完成
在我的用例中,额外的
*PCPSOptionalStatusIcon=CPSI_警告
显示状态信息就足够了。
问题内容: 我正在尝试启动并运行AngularJS 1.2 RC2应用程序。目前,我一直在使用Angular Seed项目来尝试使我的应用程序启动并运行。不幸的是,Angular Seed项目使用的是v1.0.7。在Angular Seed项目中,我将依赖项更新为以下内容: 在app.js中,我具有以下内容: 当我运行此应用程序时,出现以下错误: 我已经阅读了其他一些回答,例如1)注入’ngrou
问题内容: 我试图通过遵循工厂方法文档中的示例来构建自己的服务。我认为我做错了,因为我继续遇到未知的提供程序错误。这是我的应用程序代码,包括声明,配置和工厂定义。 编辑我现在添加了所有文件以帮助解决问题 编辑该错误的完整详细信息在下面,问题似乎与getSettings有关,因为它正在寻找getSettingsProvider,但找不到它 这些是我目前在我的应用程序中拥有的所有文件 app.js 这
问题内容: 我试图在angularjs应用程序中使用路由,如下所示: app.js controller.js index.html productList.html 当我运行此代码时,我在(谷歌浏览器的)控制台中收到以下错误: 我开始知道发生此错误,因为我在productsCtrl中使用。但是那我该怎么办?我该如何解决这个问题? 问题答案: $ element是不可注入的(它不是在Angular
错误消息: System.InvalidOperationException:未找到具有固定名称“System.Data.SqlClient”得ADO.NET提供程序得实体框架提供程序.确保在应用程序配置文件的“Entity Framework”部分中注册了提供程序。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=260882。
我无法让 在 EFCore 1.1 应用程序上运行。 下午 这是它给出的错误: Scaffold-DbContext:无法将参数绑定到参数“Path ”,因为它是空字符串。第1行:1 char:1 Scaffold-DbContext ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ category info:invalid data:(:)[Scaffold-db con
我们有一个在windows server 2012上运行的自定义凭据提供程序,它在允许用户登录之前调用身份验证服务器的API。我们也在维护我们的凭证提供者的日志。 我们现在需要捕获并记录使用远程桌面连接登录服务器的用户的IP地址。是否可以从凭证提供者内部捕获IP地址?RDP客户端发送到服务器的序列化凭据包是否包含此信息?如果是,如何在凭据提供程序中访问它?