0

我正在尝试在我的应用程序中使用 Sustainsys.Saml2.AspNetCore2 中间件。我已经成功登录并首先注册了我的电子邮件地址,然后退出并尝试再次登录。我面临的问题是 NameID 被用作 ASP.NET Identity 中的 ProviderKey,并且我被要求再次提供我的电子邮件,就好像我是第一次登录一样。在调试为什么会发生这种情况时,我看到调用:

signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, isPersistent: true, bypassTwoFactor: true);

返回{失败}。另外,我注意到 ProviderKey 与 AspNetUserLogins 表中的不同。如何将相同外部身份的第二次​​登录连接到第一次登录时创建的内部身份?

4

1 回答 1

0

如果 NameID 是临时的,则它不能用作 Asp.Net Identity 中的提供程序键。最简单的方法当然是与 Idp 交谈并要求他们改用持久 NameID。

如果这不可能,请检查是否有任何已修复且适合用作键的属性。然后,您可以覆盖AcsCommandResultCreated通知。在那里,删除现有的 NameIdentifier 声明并从您要使用的属性创建一个新声明。

于 2018-10-24T08:07:03.490 回答