【发布时间】:2016-06-29 10:29:45
【问题描述】:
我开发了一个原生 android 应用程序,它使用 WebApi 后端完成了身份验证、授权和获取资源。
在多次讨论使用 .NET 技术实现身份验证和授权的最佳和安全方式后,我们决定使用Thinktecture's IdentityServer3。
在我使用 Asp.NET 身份系统关注this series to implement a token based authentication 之前,一切都很好,但经过调查,我决定解耦身份验证服务器并使用 Thinktecture 的身份服务器。
所以现在我在 azure 上托管了一个单独的 Web 应用程序,一个用于资源,另一个用于使用 IdentityServer3 和一个本机 Android 客户端进行身份验证。
我的 Android 客户端应用程序使用 Facebook/Google 进行了身份验证,我之前已经在 android 上使用 Parse 或单独基于 Facebook Android SDK 和 Google 服务实现了此功能
还有具有角色的用户。
现在我想知道从身份验证服务器的角度以及客户端 android 应用程序的角度来看是否有正确的方法,因为有很多关于 identityserver3 与本机应用程序的配置的讨论,我也应该在 android 中使用 webview 活动处理与身份验证服务器的连接或使用带有 HTTP 库的本机 Java 代码(如改造)发送请求并获取响应。
同样使用 Facebook,我已经使用 Facebook Android SDK 直接从 android 应用程序实现了身份验证,我可以获得 AuthToken,我考虑的方法是like shown in this question:
- 从 Android 应用程序向 Facebook 验证用户。
- 将 FB 身份验证令牌获取到 Android 应用程序。
- 将身份验证令牌和 facebook UID 从 Android 转发到 Web 服务器。
- 在 Web 服务器上,使用提交的令牌进行 Facebook API 调用。
如果来自网络服务器的 Facebook API 调用返回有效的身份验证,并且用户 ID 与 Android 应用程序提交的用户 ID 相同,则您的服务器可以信任该 ID(&您可以确定 Android 身份验证是真实的)
或者我应该只依赖后端身份服务器来处理 Facebook 身份验证?
【问题讨论】:
标签: c# android asp.net openid-connect identityserver3