当前位置: 首页 > 知识库问答 >
问题:

UserManager。GenerateEmailConfirmationTokenAsync生成的令牌无法从其他域工作

鄢禄
2023-03-14

我试图创建一个身份提供者,用户在其中登录到应用程序(然后被重定向),并管理其帐户凭据,并提供承载令牌。单独运行Blazor WASM web应用程序,该应用程序管理应用程序逻辑,但也有一个管理面板,管理员可以在其中创建用户、重置密码、管理角色/权限等。该管理面板调用API。

  • 身份提供程序在上运行https://localhost:5000

现在,当我在这个管理面板中创建一个用户时,API被调用,它发送一封确认电子邮件,其中包含一个包含由ASP生成的电子邮件确认令牌的URL。NET Identity的UserManager。GenerateEmailConfirmationTokenAsync。令牌是由调用类库的API(localhost:5002)生成的,但要确认的URL是https://localhost:5000/Account/ConfirmEmail?UserId=xxxxxxxxxxxxxxxxx

身份提供程序运行ASP. NET Idreal、IdtyServer4,并用ASP. NET Core 3.1编写。应用程序用Blazor(即netStandard ard2.1)编写,然后调用API(ASP. NET Core 3.1),调用类库(ASP. NET Core 3.1)。所有项目都使用相同的数据库上下文。

我试过设置

services.AddDataProtection()
    .PersistKeysToFileSystem(new DirectoryInfo(Configuration["AppSettings:keydir"]))
    .SetApplicationName(Configuration["AppSettings:keyname"]);

在身份提供者和API中,但没有运气。我还尝试了设置:

services.AddDataProtection(options =>
    {
        options.ApplicationDiscriminator = "myapp";
    })

这与本期类似:https://github.com/dotnet/aspnetcore/issues/22081

我想这可能是因为我调用了额外的类库,我需要在那里设置一些数据保护设置吗?

共有1个答案

勾俊
2023-03-14

我想出来了。不同的项目不是问题,数据保护也不是问题。事实证明,我在创建用户之前生成了一个确认令牌(confirmationtoken)。这样,生成的令牌基于空的securitystamp。然后在另一个项目中,usermanager根据基于非空securitystamp的令牌验证令牌,因为现在已经创建了用户。这当然会产生一个无效的令牌。

 类似资料:
  • https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=your_app_client_id&response_type=code&redirect_uri=https%3a%2f%2flogin.microsoftonline.com%2fcommon%2foauth2%2fnativeclient&res

  • 我有以下ANTLR 4的语法: 我试图解析以下字符串 代码解析出左侧的ab cd,在我的应用程序中,它将被视为文本字符串。然后,它将解析为一个字符集,在这种情况下,该字符集将转换为任何数字。我的语法对我来说很有用,但我不喜欢将语法作为语法分析器规则(CHAR | DASH),因为它只是被当作一个标记。我希望lexer创建一个字符串,并给我以下标记: 而不是这些 我看了其他的例子,但还没有弄明白。通

  • 我在JQuery mobile和Eclipse中的PhoneGap中编写了一个android移动应用程序。在这个应用程序中,我调用jquery ajax来加载来自其他域的数据列表。 我的jQuery ajax调用代码是: 变量“WEBSERVICE\u URL”具有其他域php服务URL。在“pageview”事件上执行上述代码时,我遇到以下错误 有任何解决方案可以从JQuery Mobile P

  • 我是否遗漏了一些应该用来配置antlr4的命令?

  • 我试图使用flask_oauthlib访问我的twitter api,但我得到的只是错误:未能生成请求令牌。这是密码。 这在使用http://term.ie/oauth/example/client.php时不起作用,我设法获得了一个请求令牌。 我用https://github.com/lepture/example-oauth1-server/blob/master/client.py和http