【问题标题】:Can/should IdentityServer4 be used to create a token for user-email verification可以/应该使用 IdentityServer4 为用户电子邮件验证创建令牌
【发布时间】:2017-11-08 11:11:15
【问题描述】:

我为 API 身份验证设置了 IdentityServer4,尽管我有一个用例,我想验证来宾(用户)本质上是一个有效用户。就我而言,有效用户是拥有有效电子邮件地址的任何人,所以我想做以下事情:

  • 向用户发送一封带有验证令牌的电子邮件(最好是他们的电子邮件地址、一些盐和过期时间的混搭)
  • 然后用户可以将此令牌输入到我的应用程序中,他们被“允许”继续

我想知道是否可以/应该使用 IdentityServer4 来实现上述目标?

他们的tools 表明你可以生成一个令牌,虽然我对这个主题很陌生,所以希望得到一些指导。

【问题讨论】:

    标签: asp.net-core asp.net-core-mvc identityserver4


    【解决方案1】:

    不,Identity Server 处理的令牌是 access_tokens,它与基于声明的身份验证有关。

    您需要用于电子邮件验证的令牌通常称为用户令牌或一次性密码 (OTP)。您可以找到大量有关如何使用这些搜索词生成/使用这些信息的信息,但如果您使用诸如 UserManager 之类的 aspnet 身份类,您会发现它有一些内置的阅读功能可供使用。或者您可以使用UserManager 注册您自己的UserTokenProvider

    通常你会做这样的事情:

    • 使用您的 UserTokenProvider 获取特定用户的令牌 (otp)。 UserManager 将使用该用户的安全哈希和您自己的“原因”(例如“EmailVerification”)来生成短 OTP。
    • 然后,您可以将该 OTP 包装到一个对象中,其中包括电子邮件地址、用户 ID 以及您喜欢的任何内容。安全 Base64 对其进行编码(实际上,Identity Server 中有一个帮助函数,确保它没有多余的 _ 最后会弄乱 HTML 链接),把它放在给用户的电子邮件中李>
    • 用户单击您的链接将他们带到您的“验证密码”控制器,并将您的混合令牌作为有效负载。你解码它,找出它是给哪个用户的,让 UserManager 验证 OTP 部分仍然有效。
    • 工作完成。

    如果您希望他们在登录时直接将 OTP 输入到您的应用中,那么您可以跳过通过电子邮件发送链接的整个混搭部分,并直接通过电子邮件发送简短的 OTP。

    【讨论】:

    • 理论上所有这些都是有道理的,但是当我想发送验证令牌甚至不属于 ASP.Net 的用户时,我不太确定如何使用UserManager事物的身份方案。我想要returnsmart.wordpress.com/2013/12/18/otp-generation-on-mvc-c 之类的东西,但希望它内置在 Identity 或 IS4 中?能否请您提供代码示例?
    • 它内置在 Identity 中(如在 Microsoft Identity 框架中),但不在 IS4 中,因为后者纯粹与验证用户有关,而不是创建用户、电子邮件验证、用户管理等。您使用什么框架进行用户管理?我给出的搜索内容的指针应该有助于您实现特定的用户管理(这与用户身份验证不同)。
    猜你喜欢
    • 1970-01-01
    • 2012-07-14
    • 2014-10-07
    • 2018-06-07
    • 2018-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    相关资源
    最近更新 更多