最近我使用Identity Server 3为我的Web API实现了2FA.如果登录是在本地进行的(使用IUserService),一切都按预期工作.现在,我希望能够通过发出部分登录cookie来进行此登录.这意味着我有一个API方法(POST),可以让用户在不进入主页面的情况下进行部分登录.要发出身份验证cookie,这就是我所做的(基于IS3扩展方法):
_owinContext.Environment.IssueLoginCookie(new AuthenticatedLogin
{
IdentityProvider = Constants.ExternalAuthenticationType,
Subject = userId,
Name = identityId,
Claims = new[] { new Claim(ClaimTypes.NameIdentifier, identityId) },
AuthenticationMethod = Constants.AuthenticationMethods.TwoFactorAuthentication
});
Run Code Online (Sandbox Code Playgroud)
在此之后,我将用户重定向回登录页面,并完全登录到绕过2FA步骤的应用程序.我正在跳跃,这将使用户部分登录,但它完全登录用户.
注意:我实现Two Factor的方式基于IUserService中的AuthenticateLocalAsync方法.在这里,我更新AuthenticateResult以使用带有重定向路径的构造函数.API方法不会调用IUserService.它简单地发布了登录cookie.
编辑: 因此在检查IdentityServer3内部实现后,我现在能够让用户通过2FA屏幕.现在的问题是当部分登录成功时(验证码匹配)我将用户重定向到恢复URL并导致500错误页面(没有例外抛出或显示日志).如果在正常页面登录时发生这种情况,一切正常.
处理用户发布登录请求:
var messageId = clientIdentifier;
var claims = new List<Claim>();
(...)
var authenticationContext = new ExternalAuthenticationContext
{
ExternalIdentity = new ExternalIdentity() { Provider = "API", Claims = claims },
};
await _userService.AuthenticateExternalAsync(authenticationContext);
var authResult = authenticationContext.AuthenticateResult;
var ctx = new PostAuthenticationContext
{ …Run Code Online (Sandbox Code Playgroud) c# two-factor-authentication asp.net-web-api identityserver3
我即将使用ASP.NET Core框架实现Web应用程序(现有应用程序的后台办公室).目前我正在考虑如何验证用户身份.主数据库使用MySQL(此框架不支持),因此我将通过现有的PHP SOAP API访问数据库.
有没有办法实现基于令牌的(OAuth)身份验证,知道数据访问将通过SOAP API完成?
我想创建一些在Visual Studio(C++)中使用的东西,也许是一个扩展,它将与内部的两个已知函数一起使用.让我试着解释一下.假设我有两个函数start()和stop().我经常使用这些函数:
start();
do something...
stop();
Run Code Online (Sandbox Code Playgroud)
有时候,知道什么是开始以及停止什么可能会让人感到困惑:
start();
do something...
start();
do something...
start();
do something...
stop();
stop();
stop();
Run Code Online (Sandbox Code Playgroud)
让我了解什么是开始和什么停止我需要手动识别所有行.我想创建类似的东西:
start(){
do something....
start(){
do something ...
}
}
Run Code Online (Sandbox Code Playgroud)
每次我关闭开始括号时,stop函数都将关闭,代码将更加井井有条.
你们对如何完成这个或类似的东西有任何想法吗?