使用"隐式"流程,客户端(可能是浏览器)将在资源所有者(即用户)提供访问权限后获得访问令牌.
但是,通过"授权代码"流程,客户端(通常是Web服务器)仅在资源所有者(即用户)授予访问权限后才获取授权代码.使用该授权代码,客户端再次调用API,将client_id和client_secret与授权代码一起传递,以获取访问令牌.这里描述的都很好.
两个流都具有完全相同的结果:访问令牌.但是,"隐式"流程要简单得多.
问题:当"隐式"流程接缝没问题时,为什么要打扰"授权代码"流程呢?为什么不对webserver使用"Implicit"?
这对提供商和客户来说都是更多的工作.
OAuth 2.0具有多个工作流程.关于这两个,我有几个问题.
这两种方法在安全性方面有什么区别?哪一个更安全,为什么?
当服务器可以直接发出Access令牌时,我没有看到为什么在一个工作流中添加额外步骤(令牌的交换授权代码)的原因.
不同的网站说,当客户端应用程序可以保证凭据安全时,使用授权代码流.为什么?
为什么在Facebook OAuth2身份验证流程中需要"代码"和"令牌",如下所述:https://developers.facebook.com/docs/authentication/?
如果您查看OAuth对话框参考(https://developers.facebook.com/docs/reference/dialogs/oauth/),您似乎只使用该令牌来获取有关该用户的信息,并且如果您指定response_type参数为token或code,token,然后您第一次获得令牌.
为什么需要获取"代码"然后使用代码获取"令牌"而不是直接获取令牌?
我想我误解了关于OAuth如何工作的基本信息,但是https://graph.facebook.com/oauth/access_token如果你第一次使用对话框获得令牌,你似乎完全避免了请求.
对于OAuth服务器授予的离线访问,"离线"一词到底意味着什么?
这是否意味着即使用户退出第三方应用程序或用户从OAuth资源服务器(如Facebook或Google或Twitter)注销,资源服务器也将返回有关用户的数据?
Facebook有两个用于身份验证,客户端和服务器端的流程.什么时候应该使用?
Facebook文档:https://developers.facebook.com/docs/authentication/
我想制作一个小应用程序,从Paypal获取一些帐户信息,并在HTML页面中显示.我只使用HTML/CSS和Javascript,我不喜欢在服务器上运行授权流以确保安全.我不想在服务器上有令牌.
我现在有一个工作设置使用Paypal提供的OAuth代码授权流程(更多这里),但如上所述,我想从服务器中删除服务器.
我刚刚引用的页面中描述了一些方法,但似乎没有任何方法暗示可能存在隐式授权.
是否有可能使用Paypal与OAuth隐式授权或类似的东西?
(目前的答案是采用代码授权流程,这特别不是我要求的.我知道一个存在,但在这种情况下使用它是不好的,所以如果你知道一个方法而不需要向客户端提供OAuth秘密令牌.)
正如标题所述,我想从本机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:正确的后续步骤是什么,以及我的方法有什么问题?
oauth ×5
oauth-2.0 ×5
facebook ×2
google-api ×1
google-oauth ×1
java ×1
javascript ×1
oltu ×1
paypal ×1