通过ConfirmEmailAsync()验证令牌,该令牌通过另一个域上的GenerateEmailConfirmationTokenAsync()-InvalidToken

问题描述 投票:0回答:1

我有两个Asp.Net Core 2.1应用程序。

firstdomain.com]上的一个站点应该能够为同一域上的用户创建/注册/管理帐户,以及在seconddomain.com]上的站点上创建/注册/管理用户帐户>。

firstdomain.com创建/注册用户成为firstdomain.com

的用户]通过-]可以正常工作
  1. firstdomain.com上从控制器发送电子邮件,包括令牌-

string token = await userManager.GenerateEmailConfirmationTokenAsync(user);

  1. 用户收到一封带有按钮的电子邮件,该按钮链接到firstdomain.com上的ConfirmEmail页面,通过-验证令牌。
  2. var user = await userManager.FindByIdAsync(userId);
    var result = await userManager.ConfirmEmailAsync(user, HttpUtility.UrlDecode(token));
    

确认用户电子邮件,他们设置密码并登录到该站点。在firstdomain.com

但是...

通过firstdomain.com创建/注册用户以成为seconddomain.com上的用户的方法如下:->

  1. firstdomain.com

上从控制器发送电子邮件,包括令牌-

string token = await userManager.GenerateEmailConfirmationTokenAsync(user);

  1. 用户收到带有按钮的电子邮件,该按钮链接到seconddomain.com上的ConfirmEmail页面,其中令牌实际上通过-被标记为无效。
    var user = await userManager.FindByIdAsync(userId);
    var result = await userManager.ConfirmEmailAsync(user, HttpUtility.UrlDecode(token));
    
  2. firstdomain.com

创建/注册用户成为seconddomain.com上的用户不起作用,并且日志显示-VerifyUserTokenAsync()失败,目的是:用户XXXXXXXX-XXXX的EmailConfirmation -XXXX-XXXX-XXXXXXXXXXXX

两个应用程序都在同一服务器上运行。

我有两个Asp.Net Core 2.1应用程序。 firstdomain.com上的一个站点应该能够为同一域上的用户创建/注册/管理帐户,以及创建/注册/管理用户...

您是否希望您的用户自动访问这两个站点?

令牌验证的默认实现使用每个用户的随机值,该值将存储在数据库中。您的两个应用程序都将用户信息存储在同一数据库中吗?

如果不想让两个应用程序都完全访问同一数据库,则可以实施一项替代IUserSecurityStampStore服务,以跟踪两个站点的这些随机用户机密。或通过散列两个站点已经知道的其他秘密值以确定性方式派生用户“秘密”,但是这还需要考虑其他安全隐患。

您还可以替换IUserTwoFactorTokenProvider服务,以完全控制令牌的产生方式,以确保两个站点都可以生成和验证这些令牌。

或使用OAuth路由,并从firstdomain生成某种形式的承载令牌,第二域可以验证。

c# validation asp.net-core token registration
1个回答
0
投票

您是否希望您的用户自动访问这两个站点?

令牌验证的默认实现使用每个用户的随机值,该值将存储在数据库中。您的两个应用程序都将用户信息存储在同一数据库中吗?

如果不想让两个应用程序都完全访问同一数据库,则可以实施一项替代IUserSecurityStampStore服务,以跟踪两个站点的这些随机用户机密。或通过散列两个站点已经知道的其他秘密值以确定性方式派生用户“秘密”,但是这还需要考虑其他安全隐患。

您还可以替换IUserTwoFactorTokenProvider服务,以完全控制令牌的产生方式,以确保两个站点都可以生成和验证这些令牌。

或使用OAuth路由,并从firstdomain生成某种形式的承载令牌,第二域可以验证。

© www.soinside.com 2019 - 2024. All rights reserved.