【问题标题】:What is the correct approach for authentication/authorization Native Android App using Thinktecture IdentityServer3使用 Thinktecture IdentityServer3 进行身份验证/授权 Native Android App 的正确方法是什么
【发布时间】: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

  1. 从 Android 应用程序向 Facebook 验证用户。
  2. 将 FB 身份验证令牌获取到 Android 应用程序。
  3. 将身份验证令牌和 facebook UID 从 Android 转发到 Web 服务器。
  4. 在 Web 服务器上,使用提交的令牌进行 Facebook API 调用。

如果来自网络服务器的 Facebook API 调用返回有效的身份验证,并且用户 ID 与 Android 应用程序提交的用户 ID 相同,则您的服务器可以信任该 ID(&您可以确定 Android 身份验证是真实的)

或者我应该只依赖后端身份服务器来处理 Facebook 身份验证?

【问题讨论】:

    标签: c# android asp.net openid-connect identityserver3


    【解决方案1】:

    您可以使用混合流程(如果您需要访问令牌和刷新令牌) ,你也可以使用隐式流

    看看this topic

    关于如何做到这一点, 或者,您可以通过结合使用 Web 视图和混合/隐式流来实现,或者对 IdSvr 登录页面执行重定向样式。使用resource owner password flow

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-04-23
      • 1970-01-01
      • 2022-01-20
      • 2020-02-07
      • 1970-01-01
      • 2021-08-10
      • 1970-01-01
      相关资源
      最近更新 更多