0

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

因此,我们从 nuget 下载了 Bytes 并将其与我们的数据库连接。数据库使用默认范围和 Thinktecture 自身的示例客户端进行了初始化。然后我们通过 OWIN 将 AD FS 连接为 IDP,并制作了一个简单的 ExternalUserService。

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

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

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

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

--

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

4

1 回答 1

0

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

我们尝试仅使用主题创建登录结果 - 这是为服务器上的本地登录而制作的。如果同时关闭此功能,您最终会遇到问题。

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

于 2015-05-04T22:56:20.537 回答