标签: asp.net-identity-3

如何使Identity.GetUserId()返回Guid而不是字符串?

我正在使用ASP.Net Identity 2,但很快就希望在它变得更稳定时更改为Identity 3(任何人都知道这可能是什么时候?).这是我的代码示例:

content.ModifiedBy = User.Identity.GetUserId();
Run Code Online (Sandbox Code Playgroud)

Content表将ModifedBy存储为UNIQUEIDENTIFIER,Content对象将Guid的数据类型分配给ModifiedBy

当我查看GetUserId()的签名时,它返回一个字符串.

那么如何将用户UserId带入ModifiedBy,这是一个Guid?

asp.net asp.net-identity asp.net-identity-2 asp.net-identity-3

5
推荐指数
1
解决办法
2244
查看次数

如何更改asp.net identity 3(vnext)使用的表名?

在asp.net身份2中用于更改身份表名称的方法在asp.net身份3中不起作用.

asp.net asp.net-identity asp.net-identity-3

5
推荐指数
1
解决办法
1907
查看次数

重定向登录到控制器操作

从使用个人用户帐户的ASP.NET 5 Web应用程序模板开始,我已设法使用Microsoft帐户进行外部身份验证.当用户点击登录,他们将被重定向到ExternalLoginAccountController这样的

<form asp-controller="Account" asp-action="ExternalLogin" method="post" asp-route-returnurl="@ViewData["ReturnUrl"]" class="nav navbar-right">
    <button type="submit" class="btn btn-null nav navbar-nav navbar-right" name="provider" value="Microsoft" title="Log in"><span class="fa fa-sign-in"/>&nbsp; Log In</button>
</form>
Run Code Online (Sandbox Code Playgroud)

这让他们使用他们的Microsoft帐户登录,所有似乎都运行良好.但是,如何拦截直接尝试访问特权操作[Authorize] 以便将用户重定向到ExternalLogin?可以设置默认操作Startup.cs吗?

编辑1尝试遵循我CustomAutorizationFilter在Filters文件夹中创建的@Yves的建议.它不会检查任何条件

public class CustomAutorizationFilter : IAuthorizationFilter
{
    public void OnAuthorization(Microsoft.AspNet.Mvc.Filters.AuthorizationContext context)
    {
        //if (...) // Check you conditions here
        //{
            context.Result = new RedirectToActionResult("ExternalLogin", "Account", null);
        //}
    }
}
Run Code Online (Sandbox Code Playgroud)

并编辑ConfigureServices如下

        services.AddMvc(config =>
        {
            config.Filters.Add(typeof(Filters.CustomAutorizationFilter));
        });
Run Code Online (Sandbox Code Playgroud)

当我在本地运行应用程序时,它不再进入主页.它返回一个空白http://localhost:52711/Account/ExternalLogin

显然有很多我不明白. …

entity-framework-core asp.net-core-mvc asp.net-identity-3 asp.net-core

5
推荐指数
1
解决办法
7704
查看次数

标识3 SignInManager.PasswordSignInAsync()不返回任何结果

我正在使用Identity 3.0创建Web应用程序,并且遇到SignInManager PasswordSignInAsync()方法的问题.我在文档中使用它,但它没有返回任何内容(应用程序代码只是停在那里)这是我的控制器代码:

 public class AppController : Controller
{
    private IAccountService _service;
    private readonly SignInManager<User> _signInManager;
    private UserManager<User> _userManager;

    public AppController(IAccountService service, SignInManager<User> signInManager, UserManager<User> userManager)
    {
        _service = service;
        _signInManager = signInManager;
        _userManager = userManager;
    }

    [HttpPost]
    [AllowAnonymous]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Login(LoginViewModel model)
    {
        if (ModelState.IsValid)
        {
            var user = await _userManager.FindByEmailAsync(model.Email);
            var password = await _userManager.CheckPasswordAsync(user, model.Password);

            var result = await _signInManager.PasswordSignInAsync(
                model.Email,
                model.Password,
                model.RememberMe,
                lockoutOnFailure: false);

            if (result.Succeeded)
            {
                return RedirectToAction(nameof(EmployeeController.Contact), "Employee");
            }
            if (result.IsLockedOut)
            { …
Run Code Online (Sandbox Code Playgroud)

asp.net asp.net-mvc asp.net-identity asp.net-identity-3 asp.net-core

5
推荐指数
1
解决办法
1万
查看次数

ASP.NET 5 Identity 3 用户在应用程序重新启动后注销

我们正在使用 ASP.NET Identity 3。

我们的用户会随机自动注销。为了重现这个问题,我尝试重新启动应用程序,所有用户都退出,甚至那些已经检查过的用户也都退出了Remember me

它只发生在生产中,在开发环境中运行良好。

更新:

我们只有一台生产服务器。

c# asp.net asp.net-identity-3 asp.net-core

5
推荐指数
1
解决办法
551
查看次数

IdentityServer4 - 会话管理和空闲超时或不活动时段

我已经配置了IdentityServer几个客户端,其中一些是使用Hybrid flow(桌面,iOS,并不重要)的本机应用程序.

我想强制注销超过X分钟不活动的用户,如果可能的话,再次重定向到登录页面.
我可以设法通过使用短暂刷新令牌以实现这一目标RefreshTokenExpiration = true,并且SlidingRefreshTokenLifetime = *DesiredTimeoutTime*,和每次调用API之前,客户端首先刷新用户的访问令牌.实际上,这会将会话管理空闲超时重载到刷新令牌的到期时间.
但这不是它的设计使用方式.刷新令牌应该是长寿的.
此外,对于API的每次调用,客户端都会刷新它的访问令牌,因为我使用持久存储来获取我的授权(特别是使用内置EF支持的SQL Server),这意味着我的方式比我更多曾经想过我的ID DB.

我指定我使用的是本机应用程序,因为我知道它(可能)可以使用cookie实现基于浏览器的应用程序,但同样,那些与本机应用程序不能很好地工作(对于我知道的所有内容,请放心如果我错了就纠正我.如果有可能以某种方式实现饼干 - 我很乐意听到.
总的来说,我真的缺乏对Identity.Application cookievs 的关系的了解Access Token.这有点令人困惑.

无论如何,我正在寻找更优雅的解决方案,如果有的话.
谢谢.

session asp.net-identity-3 asp.net-core identityserver4 asp.net-core-identity

5
推荐指数
0
解决办法
1327
查看次数

.Net 身份 2 与 3

我了解 .NET Identity,但是有很多关于 Identity 2 和 Identity 3 的文章。后者(Identity 3)似乎只适用于 .NET Core 解决方案。所以正在考虑使用 Identity 2。但我不清楚:

  • v2 和 v3 有什么区别?
  • v2 还支持吗?

asp.net asp.net-membership asp.net-identity-2 asp.net-identity-3 asp.net-core

5
推荐指数
1
解决办法
1947
查看次数

刷新登录和重新加载声明

我将用户选择的文化存储到用户声明中,并且我有一个自定义 RequestCultureProvider 读取此值并相应地设置请求文化。

该应用程序将有一个个人资料页面,用户可以在其中更改他的偏好(包括文化)。将数据保存到数据库后,我需要默默地重新登录用户以更新他的声明。

附加信息:

  • 我将 IdentityServer4 与 AspNet Core 2.0 和 Asp.Net Identity 一起使用
  • 我正在将文化加载到 OnTokenValidated 事件(客户端应用程序)中的声明中。也可以在 GetProfileDataAsync (IProfileService) 或 UserClaimsPrincipalFactory (ASP.NET Core Identity) 中完成
  • 该系统由 3 个 Web 应用程序(Idsv4 + app1 + app2)组成。个人资料页面在应用程序中实现。
  • 使用配置了 Asp.NET Identity 的单个 Web 应用程序,您可以使用 SignInManager 中的 RefreshSignInAsync 方法重新生成用户的应用程序 cookie,但是我需要从客户端应用程序(app1 和 app2)触发此过程,因此无法访问 SignInManager。
  • 我尝试使用 HttpContext.Authentication.ChallengeAsync("oidc") HttpContext.Authentication.SignInAsync 并且显然调用了身份验证端点,但是我无法处理响应并且它在我调用此代码的 MVC 操作中生成无限循环。

那么,如何使用 Idsrv4 实现静默重新签名?

authentication asp.net-identity-3 identityserver4 asp.net-core-2.0

5
推荐指数
0
解决办法
878
查看次数

如何使自定义用户声明在 API 请求中可用

我有一个解决方案,包括:

  • ASP.NET Core 2.1 在 ASP.NET Identity Core 之上运行 IdentityServer4。
  • ASP.NET Core 2.1 Web API 设置为使用 IdentityServer 作为身份验证提供程序。
  • 使用 javascript 库的 React SPA Web 应用程序oidc-client

当我创建新用户时,我设置了一些保存在AspNetUserClaims表中的自定义声明,如下所示: 在此输入图像描述

然后,在我的 API 项目中,在控制器内我想要获取经过身份验证的用户的用户声明。
我本来希望this.User.Claims得到这些,但结果却返回了以下内容,这似乎是与客户端应用程序相关的声明,而不是与用户相关的声明。

在此输入图像描述

如何address, location, tenant_role从 Web API 项目内的控制器访问这些自定义用户声明 ( )?
请记住,API 项目无权访问该类UserManager或任何ASP.NET Identity Core相关内容。

c# asp.net claims-based-identity asp.net-identity-3 identityserver4

5
推荐指数
1
解决办法
5493
查看次数

System.IdentityModel.Tokens 和 Microsoft.IdentityModel.Tokens 有什么区别?我应该在 ASP.NET Core 应用程序中使用哪一个?

我们可以在 NuGet 库中找到两个独立的包:

两者似乎都定期更新并有数百万次下载。

我知道它System.IdentityModel.Tokens.Jwt依赖于Microsoft.IdentityModel.Tokens,但我不知道应该在我的 ASP.NET Core 2.0 应用程序中使用哪个。

我现在正在使用Microsoft.IdentityModel.Tokens,它足以创建 JWT 令牌并验证它们。

我需要添加System.IdentityModel.Tokens.Jwt到我的项目中并更改任何代码吗?

PS:我在这个项目中没有使用 Azure 服务。

jwt asp.net-identity-3 asp.net-core asp.net-core-2.0

5
推荐指数
1
解决办法
4712
查看次数