相关疑难解决方法(0)

当"隐式"流程运行良好时,为什么OAuth2中存在"授权代码"流程?

使用"隐式"流程,客户端(可能是浏览器)将在资源所有者(即用户)提供访问权限后获得访问令牌.

但是,通过"授权代码"流程,客户端(通常是Web服务器)仅在资源所有者(即用户)授予访问权限后才获取授权代码.使用该授权代码,客户端再次调用API,将client_id和client_secret与授权代码一起传递,以获取访问令牌.这里描述的都很好.

两个流都具有完全相同的结果:访问令牌.但是,"隐式"流程要简单得多.

问题:当"隐式"流程接缝没问题时,为什么要打扰"授权代码"流程呢?为什么不对webserver使用"Implicit"?

这对提供商和客户来说都是更多的工作.

authentication oauth oauth-2.0

241
推荐指数
7
解决办法
5万
查看次数

两个工作流程有什么区别?何时使用授权码流程?

OAuth 2.0具有多个工作流程.关于这两个,我有几个问题.

  1. 授权代码流 - 用户从客户端应用程序登录,授权服务器向应用程序返回授权代码.然后,应用程序交换访问令牌的授权码.
  2. 隐式授权流程 - 用户从客户端应用程序登录,授权服务器直接向客户端应用程序发出访问令牌.

这两种方法在安全性方面有什么区别?哪一个更安全,为什么?

当服务器可以直接发出Access令牌时,我没有看到为什么在一个工作流中添加额外步骤(令牌的交换授权代码)的原因.

不同的网站说,当客户端应用程序可以保证凭据安全时,使用授权代码流.为什么?

oauth oauth-2.0

152
推荐指数
5
解决办法
5万
查看次数

Facebook OAuth 2.0"代码"和"令牌"

为什么在Facebook OAuth2身份验证流程中需要"代码"和"令牌",如下所述:https://developers.facebook.com/docs/authentication/

如果您查看OAuth对话框参考(https://developers.facebook.com/docs/reference/dialogs/oauth/),您似乎只使用该令牌来获取有关该用户的信息,并且如果您指定response_type参数为tokencode,token,然后您第一次获得令牌.

为什么需要获取"代码"然后使用代码获取"令牌"而不是直接获取令牌?

我想我误解了关于OAuth如何工作的基本信息,但是https://graph.facebook.com/oauth/access_token如果你第一次使用对话框获得令牌,你似乎完全避免了请求.

facebook oauth-2.0 facebook-authentication

61
推荐指数
8
解决办法
3万
查看次数

OAuth中的"离线"访问是什么意思?

对于OAuth服务器授予的离线访问,"离线"一词到底意味着什么?

这是否意味着即使用户退出第三方应用程序或用户从OAuth资源服务器(如Facebook或Google或Twitter)注销,资源服务器也将返回有关用户的数据?

oauth google-api google-oauth google-oauth2

31
推荐指数
2
解决办法
2万
查看次数

23
推荐指数
1
解决办法
6981
查看次数

如何使用OAuth通过Javascript连接到Paypal API?

我想制作一个小应用程序,从Paypal获取一些帐户信息,并在HTML页面中显示.我只使用HTML/CSS和Javascript,我不喜欢在服务器上运行授权流以确保安全.我不想在服务器上有令牌.

我现在有一个工作设置使用Paypal提供的OAuth代码授权流程(更多这里),但如上所述,我想从服务器中删除服务器.

我刚刚引用的页面中描述了一些方法,但似乎没有任何方法暗示可能存在隐式授权.

是否有可能使用Paypal与OAuth隐式授权或类似的东西?

(目前的答案是采用代码授权流程,这特别不是我要求的.我知道一个存在,但在这种情况下使用它是不好的,所以如果你知道一个方法而不需要向客户端提供OAuth秘密令牌.)

javascript paypal oauth

10
推荐指数
1
解决办法
1048
查看次数

如何通过Jersey + Oltu从Java桌面应用程序访问Bitbucket API?

正如标题所述,我想从本机Java桌面应用程序访问bitbucket API.Bitbucket要求应用程序使用OAuth2,为此我发现Oltu应该完成这项工作.

但是,我对OAuth的了解非常有限,所以我很早就陷入了困境.这是我到目前为止所做的:

第1步:我使用我的Bitbucket帐户注册了OAuth Consumer,其中包含以下详细信息:

Name: jerseytestapp
Description:
CallbackURL: http://localhost:8080/
URL: 
Run Code Online (Sandbox Code Playgroud)

问题1:我可以自动执行此步骤吗?

第2步:我运行以下Java代码:

package jerseytest;

import org.apache.oltu.oauth2.client.request.OAuthClientRequest;
import org.apache.oltu.oauth2.common.exception.OAuthSystemException;

public class BitbucketJersey {

    public static void main(String[] args) {
    OAuthClientRequest request;
    try {
        request = OAuthClientRequest
                .authorizationLocation("https://bitbucket.org/site/oauth2/authorize")
                .setClientId("jerseytestapp")
                .setRedirectURI("http://localhost:8080")
                .buildQueryMessage();

            System.out.println(request.getLocationUri());

        } catch (OAuthSystemException e) {
            e.printStackTrace();
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

第3步:我收到了以下locationURI并在Firefox中打开

https://bitbucket.org/site/oauth2/authorize?redirect_uri=http%3A%2F%2Flocalhost%3A8080&client_id=jerseytestapp
Run Code Online (Sandbox Code Playgroud)

问题2:我是否需要使用浏览器或者是否可以从java应用程序执行此操作?

我在Firefox中收到以下答案消息:

Invalid client_id
This integration is misconfigured. Contact the vendor for assistance.
Run Code Online (Sandbox Code Playgroud)

问题3:正确的后续步骤是什么,以及我的方法有什么问题?

java bitbucket-api oauth-2.0 oltu

5
推荐指数
1
解决办法
2927
查看次数