使用Thinktecture IdentityServer3进行身份验证/授权的正确方法是什么?

时间:2016-03-14 11:43:24

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

我开发了一个原生的Android应用程序,它使用WebApi后端完成了它的身份验证,授权和获取资源。

在讨论了使用.NET技术实现身份验证和授权的最佳和最安全的方法之后,我们决定使用Thinktecture's IdentityServer3

在我使用Asp.NET Identity系统跟踪this series to implement a token based authentication之前,所有事情都没问题,但经过调查后我决定将身份验证服务器解耦并使用Thinktecture的身份服务器。

所以现在我有一个分离的web应用程序托管在azure上,用于资源,其他用于使用IdentityServer3和一个原生Android客户端进行身份验证。

我的Android客户端应用程序使用Facebook / Google进行身份验证,我之前已经在Android上使用Parse或基于Facebook Android SDK& Google服务

也是有角色的用户。

现在我想知道从认证服务器的角度来看是否有正确的方法以及客户端Android应用程序的角度来看,因为有很多关于identityserver3与本机应用程序的配置的讨论也应该在android中使用webview活动处理与身份验证服务器的连接或使用本机java代码与HTTP库(如改造)发送请求和获取响应。

还有Facebook,我已经使用Facebook Android SDK直接从Android应用程序实现了身份验证,我可以获得AuthToken,我认为的方法是like shown in this question

  1. 从Android应用程序验证用户到Facebook。
  2. 获取FB身份验证令牌到Android应用程序。
  3. 转发身份验证令牌& facebook UID从Android到网络     服务器
  4. 在网络服务器上,使用提交的令牌进行Facebook API调用。
  5. 如果来自Web服务器的Facebook API调用返回有效身份验证,并且用户ID等于Android应用程序提交的身份验证,则您的服务器可以信任该ID(并且您可以确定Android身份验证是真实的)

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

1 个答案:

答案 0 :(得分:0)

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

刚刚this topic

关于你怎么做, 您可以通过组合Web视图和混合/隐式流来执行此操作,也可以将重定向样式执行到IdSvr登录页面。使用resource owner password flow