请解释WebAuthenticationBroker

请解释WebAuthenticationBroker,authentication,windows-runtime,oauth-2.0,winrt-xaml,restful-authentication,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)

太多的间接层次,让我很困惑

在普通的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)
那怎么安全呢

  • 服务器不应该进行解密吗
  • 因此,您的服务器不应该启动连接吗?通过这种方式,它可以向salt发送一些随机比特,这样facebook就可以用它来保护返回令牌
  • 那么重定向URI是否完全是任意的,代理从本质上解析来自IP(身份提供者)的响应

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


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

    WebAuthenticationBroker只是自动化了一种常见技术,即在身份验证完成时查找要导航到的特定URL,并取消它以提取
    访问令牌。这主要用于带有嵌入式浏览器的移动应用程序。没有涉及任何服务器(授权服务器除外)

    OAuth2中有两个常用的身份验证流:

  • 授权代码流
  • 隐性赠款流动
  • 在#1中,您有3个部分:您的服务器、授权服务器(如Facebook)和浏览器。在这个流程中,访问令牌在服务器和AS之间协商,浏览器是一个中介。(更多详细信息请参见)

    在#2中,
    access_令牌
    由浏览器(或嵌入本机应用程序的浏览器)和AS直接协商。任何地方都没有秘密存储(如流#1)。()

    您的示例使用#2,如
    response_type=token

    access\u令牌
    通常以URL的形式返回:

    http://{callback}/#access_token={the access token}
    
    当浏览器尝试导航到此地址时,
    WebAuthenticationBroker
    将中断导航并调用您的代码。然后,您将提取
    access\u令牌
    ,并执行应用程序对AS(或API)所做的任何操作

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

    注意:
    access\u令牌
    通常是不透明的实体。没有加密、签名或其他任何东西。更现代的系统将返回一个
    Json Web令牌
    ,该令牌确实具有意义和内容,并且经过数字签名。在上面的示例中,您将看到除了
    access\u令牌
    之外,还有一个
    id\u令牌
    参数。那是JWT


    WebAuthenticationBroker
    只是自动化了一种常见技术,即在身份验证完成时查找要导航到的特定URL,并取消它以提取
    access\u令牌。这主要用于带有嵌入式浏览器的移动应用程序。没有涉及任何服务器(授权服务器除外)

    OAuth2中有两个常用的身份验证流:

  • 授权代码流
  • 隐性赠款流动
  • 在#1中,您有3个部分:您的服务器、授权服务器(如Facebook)和浏览器。在这个流程中,访问令牌在服务器和AS之间协商,浏览器是一个中介。(更多详细信息请参见)

    在#2中,
    access_令牌
    由浏览器(或嵌入本机应用程序的浏览器)和AS直接协商。任何地方都没有秘密存储(如流#1)。()

    您的示例使用#2,如
    response_type=token

    access\u令牌
    通常以URL的形式返回:

    http://{callback}/#access_token={the access token}
    
    当浏览器尝试导航到此地址时,
    WebAuthenticationBroker
    将中断导航并调用您的代码。然后,您将提取
    access\u令牌
    ,并执行应用程序对AS(或API)所做的任何操作

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

    注意:
    access\u令牌
    通常是不透明的实体。没有加密、签名或其他任何东西。更现代的系统将返回一个
    Json Web令牌
    ,该令牌确实具有意义和内容,并且经过数字签名。在上面的示例中,您将看到除了
    access\u令牌
    之外,还有一个
    id\u令牌
    参数。那是JWT


    谢谢我也得出了同样的结论。只有当你没有自己的服务时,才能得到代币。(又名。你的应用程序完全依赖于第三方服务)谢谢。我也得出了同样的结论。只有当你没有自己的服务时,才能得到代币。(又名。您的应用程序完全依赖于第三方服务)