请解释WebAuthenticationBroker

时间:2013-10-12 20:20:18

标签: authentication windows-runtime oauth-2.0 winrt-xaml restful-authentication

太多的间接层,让我感到困惑。

在正常的OAuth中,最后一段通常需要使用授权令牌回复依赖方(也称为服务器),稍后将通过公钥解密。

到目前为止,我见过的唯一例子是:

String FacebookURL = "https://www.facebook.com/dialog/oauth?client_id=" + FacebookClientID.Text + "&redirect_uri=" + Uri.EscapeUriString(FacebookCallbackUrl.Text) + "&scope=read_stream&display=popup&response_type=token";

然而,似乎经纪人能够确定用户是否合法,无需前往您自己的服务器。如以下行所示:

if (WebAuthenticationResult.ResponseStatus == WebAuthenticationStatus.Success)

这怎么样都安全?

  1. 服务器不应该进行解密吗?
  2. 为此,您的服务器不应该启动连接吗?这样它就可以向salt发送一些随机位,这样facebook可以使用?
  3. 保护返回令牌

    重定向URI是否完全是任意的,其中代理实质上解析了来自IP(身份提供者)的响应。

    是否有一些第三方服务器参与了该过程,例如。 MS自己的服务器使我不知道这个可能吗?

    如果重定向URI应该是指向我自己的服务的URI,那么我该如何处理和响应请求?

1 个答案:

答案 0 :(得分:4)

WebAuthenticationBroker只是自动执行查找特定URL以导航到身份验证完成时的常用技术,并取消它以提取access_token。这主要用于具有嵌入式浏览器的移动应用程序。没有涉及服务器(授权服务器除外)。

OAuth2中有2个经常使用的身份验证流程:

  1. 授权代码流程
  2. 隐式授权流程
  3. 在#1中,您有3件:您的服务器,授权服务器(例如Facebook)和浏览器。在此流程中,access_token在您的服务器和AS之间协商,浏览器是中介。 (更多细节在this article

    中描述

    在#2中,access_token在浏览器(或本机应用程序中嵌入的浏览器)与AS之间直接协商。任何地方都没有秘密存储(如流程#1)。 (A summary here

    您的示例使用#response_type=token

    指示的#2

    access_token通常在以下格式的网址中返回:

    http://{callback}/#access_token={the access token}
    

    当浏览器尝试导航到此地址时,WebAuthenticationBroker将中断导航并调用您的代码。然后,您将提取access_token并执行您的应用对AS(或您的API)所做的任何事情。

    This sample显示了如何使用它(使用我们自己的AS,但您可以轻松地将其推广到任何AS)。

      

    注意:access_tokens通常是不透明的实体。没有加密或签名或任何东西。 MOre现代系统将返回Json Web Token,其具有含义和内容并经过数字签名。在上面的示例中,除了id_token之外,您还会看到access_token参数。那是JWT。