通过 Google 或 Twitter 授权 .net user-application

Authorising a .net user-application through Google or Twitter

我的问题[与这个问题类似,但使用第三方提供商而不是活动目录。

我有一个 end-user UWP 应用程序,我想使用我的 Azure API 应用程序。我不是 Azure 移动应用程序,它是客户端 SDK。

大部分文档属于 "copy paste this magic code" 类型,从不解释身份验证的实际发生方式。

我正在检查移动应用程序 SDK,因为 Microsoft 的文档说它是 auth。过程是一样的。 据我所知,移动 App SDK 打开一个 web-view 与 WebAuthenticationBroker 生成的非常相似。然后每个对服务器的请求都伴随着一个 header X-ZUMO-AUTH 和一个令牌。看来此令牌是由 Azure 应用程序服务而非原始提供商颁发的。它比 Twitter 或 Google 发行的令牌要长得多。 同时,当我将 web-browser 指向 end-point 并完成 log-in 过程时,我看到浏览器正在使用 Cookie:ARRAffinity=c4b66198677464de573103f7aa267c33ea38617020514011cea4506e0a55d9d0; AppServiceAuthSession=EIVymV

问题:

  1. 问题是移动应用程序文档是否只是提供 有关如何使用 SDK 的说明。我不清楚我会怎么做 获取应用服务颁发的token

  2. 每个人都知道如何获取 Google 的访问令牌 和推特。它们可以用于访问 Azure API 应用程序吗?

API 应用使用与移动应用相同的 built-in 身份验证是正确的。基本流程如下所示:

  1. 使用提供商凭据登录应用程序。这可以通过使用提供商的 SDK 使用 client-directed 流程来完成,也可以使用涉及浏览器弹出窗口(即您提到的 Web 视图)的 server-directed 流程来完成。在后一种情况下,/.auth/login/ 有一个端点,它由 App Service 提供并管理您的应用程序的登录流程。
  2. 应用服务将使用 session 令牌(JWT)响应您的客户端应用。
  3. 您使用来自 #2 的 session 令牌呼叫您的 API。它通过 x-zumo-auth HTTP 请求 header 传递(出于遗留原因,它以这种方式命名)。

您看到的 AppServiceAuthSession cookie 是 session 当您使用浏览器进行身份验证时使用的 cookie。 ARRAffinity 是 App Service 使用的内部路由 cookie,与 auth 无关。

如果您正在寻找有关 built-in 应用服务身份验证/授权如何工作的更多内部技术细节,请查看我的博客,从 post 开始:http://cgillum.tech/2016/02/01/architecture-of-azure-app-service-authentication-authorization/