IdentityServer V3 不接受登录

IdentityServer V3 does not accept login

我们正在尝试使用 IdentityServer3 构建 OAuth2 授权。

所以我们从 nuget 下载了字节并将其连接到我们的数据库。 使用默认范围和来自 Thinktecture self 的示例客户端初始化数据库。 然后我们通过OWIN连接AD FS作为IDP,做了一个简单的ExternalUserService。

到目前为止一切正常,可以打开 IdSrv 的权限页面,显示用户名并且到目前为止还没有应用程序同意。

然后我们尝试将 Xamarin.Auth 连接到它并收到错误 无法确定要登录的应用程序 并且在日志中出现错误 Signin Id not present(之后在 ADFS IDP 登录)。

为了降低复杂性,我们决定回到 InMemoryUserService 并创建一个 InMemoryUser。这对权限页面有效(至少在短时间内 - 现在时间结束了),但它不允许 OAuth2 授权代码流,最终一次又一次地显示登录页面。并且日志中没有任何错误的证据。

我们如何调试,发生了什么?有什么方法可以查看为什么用户在登录后再次被重定向到登录页面?

--

我们通过创建一个新的空 MVC 应用程序进一步降低了复杂性,该应用程序仅使用一个简单的 InMemoryUserFactory。 现在有点令人困惑:一个用户能够从他的机器登录 - 其他机器(同一用户 - 因为我们只创建了一个)无法登录并一遍又一遍地提示登录。

如果使用 IdentityServer3 并且您使用自己的外部登录方法,您应该密切注意 IdSrv3 的 API。

我们试图创建一个仅包含主题的登录结果 - 这是为在服务器上进行本地登录而创建的。如果同时关闭它,你最终会遇到问题。

因此,如果您使用自己的外部登录提供程序并关闭本地登录,请确保为身份验证方法调用正确的重载(在我们的例子中为 3 个参数)。