我不清楚,如果端点是RFC6749中多次描述的相同(授权)服务器,为什么oauth2中存在刷新/访问令牌概念.
资源所有者在不共享凭据的情况下授权任何第三方组件的第一个授权步骤是oauth2 的基本思想.使用授权令牌生成访问和刷新令牌只是另一级别的授权间接imho,但没有增加安全性.
由于授权服务器是相同的,因此访问令牌与授权令牌和刷新令牌一样敏感,因此我称之为不必要的复杂性.
对我来说唯一有意义的解释是,如果有人窃取了访问令牌,则客户端可以请求新的访问令牌.但有人怎么加钢呢?如果它是中间的人,那么当客户请求新的时,他也有刷新令牌.
我的问题是:为什么授权服务器不仅仅返回一个可以被客户端和资源所有者撤销的访问令牌?刷新/访问令牌策略有什么好处?
谢谢你的解释.
我设立条纹连接的解释这里(独立账户).我处理access_token我的节点服务器上的授权和检索.
用户可以访问该链接MY_SERVER_URI/authorize,并将被重定向到预定义的条带AUTHORIZE_URI:
app.get("/authorize", function(req, res) {
// Redirect to Stripe /oauth/authorize endpoint
res.redirect(AUTHORIZE_URI + "?" + qs.stringify({
response_type: "code",
scope: "read_write",
client_id: CLIENT_ID
}));
});
Run Code Online (Sandbox Code Playgroud)
用户授权Stripe Connect后,他或她将被重定向到预定义的REDIRECT_URI,在这种情况下等于MY_SERVER_URI/oauth/callback,执行以下脚本:
app.get("/oauth/callback", function(req, res) {
var code = req.query.code;
// Make /oauth/token endpoint POST request
request.post({
url: TOKEN_URI,
form: {
grant_type: "authorization_code",
client_id: CLIENT_ID,
code: code,
client_secret: API_KEY
}
}, function(err, r, body) {
var accessToken = JSON.parse(body).access_token;
// Do something with your accessToken …Run Code Online (Sandbox Code Playgroud) 我想对工作表和Google驱动器api使用相同的OAuth代码和令牌,而无需将工作表和驱动器重定向到第2页。
以下是使用oauth 2生成访问代码和令牌的代码
string SCOPE = "https://spreadsheets.google.com/feeds https://docs.google.com/feeds";
OAuth2Parameters parameters = new OAuth2Parameters();
parameters.ClientId = CLIENT_ID;
parameters.ClientSecret = CLIENT_SECRET;
parameters.RedirectUri = REDIRECT_URI;
parameters.Scope = SCOPE;
string authorizationUrl = OAuthUtil.CreateOAuth2AuthorizationUrl(parameters);
OAuthUtil.GetAccessToken(parameters);
string accessToken = parameters.AccessToken;
Run Code Online (Sandbox Code Playgroud)
就像在asp.net mvc中一样,它是通过重定向Google表格API生成的。
我也想使用Google Drive API来获得相同的令牌。
我如何才能为Google Drive API 创建凭据对象,以便与其一起使用。遵循代码打开另一个窗口并将代码发送到该窗口。
var credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets
{
ClientId = clientId,
ClientSecret = clientSecret
}, scopes, "skhan", CancellationToken.None, new FileDataStore("Drive.Auth.Store")).Result;
Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc oauth google-drive-api google-api-dotnet-client
我正在尝试使用<cfoauth>标记登录,但我无法这样做.它正在显示
错误:invalid_request
以下是我的代码.
<cfoauth
type = "google"
clientid = "*****************es7t0r6qc"
secretkey = "**************tSF97WncM5ix9jtvD200"
result = "result"
scope="https://www.googleapis.com/auth/plus.me"
redirecturi = "http://192.168.9.126:8088/bootstrap-blog-template/tpl/cfoauth.cfm"
>
Run Code Online (Sandbox Code Playgroud)
请帮忙.
我在项目中使用基于OAuth Bearer令牌的身份验证.成功登录请求后,我收到以下json.
{"access_token":"some token","token_type":"bearer","expires_in":1232}
Run Code Online (Sandbox Code Playgroud)
我想在json下面发送更多信息数据.我创建了身份验证票证并添加了authenticationproperties.但它并没有起作用.
GrantResourceOwnerCredentials方法代码:
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
try
{
context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
var schoolId = context.UserName;
var password = context.Password;
logger.InfoFormat(CommonConstants.LoginInfoLogMessageFormat, schoolId);
var loginOperator = new LoginManager();
var result = loginOperator.IsUser(schoolId, password);
if (result)
{
var identity = new ClaimsIdentity(context.Options.AuthenticationType);
identity.AddClaim(new Claim("sub", context.UserName));
identity.AddClaim(new Claim("role", "user"));
var authenticationProperties = GetUserAuthenticationProperties();
var authenticationTicket = new AuthenticationTicket(identity, authenticationProperties);
context.Validated(authenticationTicket);
}
else
{
context.SetError("invalid_grant", "Kullan?c? ad? veya ?ifre yanl??.");
}
}
catch (Exception exception)
{ …Run Code Online (Sandbox Code Playgroud) 我在网上找不到任何模仿谷歌登录MVC 5及以下用于MVC 6的实现.是否支持?我正在使用OWIN,但它似乎现在已经过时了.任何人都可以如此善良,以我的方式扔一些链接或信息?我完全失去了.
这是一个与时间一样古老的问题.但是在使用googles javascript API时如何解决SAMEORIGIN错误?
从他们的例子:
let clientId = 'CLIENT_ID';
let apiKey = 'API_KEY';
let scopes = 'https://www.googleapis.com/auth/youtube.readonly';
gapi.client.setApiKey(apiKey);
setTimeout(() => {
gapi.auth.authorize({client_id: clientId, scope: scopes, immediate: true}, (authResult) => {
console.log(authResult);
});
});
Run Code Online (Sandbox Code Playgroud)
我明白了:
拒绝展示'..".在一个框架中,因为它将'X-Frame-Options'设置为'SAMEORIGIN'.
我将API密钥设置为浏览器密钥.并将客户端ID设置为Web应用程序.
我试图通过localhost测试这可能是一个问题.所以在API Key上我将http:// localhost:8000添加到授权的JavaScript起源 - 这可能没有意义,但我认为值得一试.
API密钥不限于任何域,并且OAuth验证屏幕没有域验证.
我也尝试使用--disable-web-security运行chrome但没有运气.
我正在建设一个muli-tenant saas(software as a service) architecture.我必须authentication system为系统构建.
根据我的研究,我认为我需要构建基于身份验证系统OAuth2.0和持有者令牌JWT tokens.
在阅读了很多关于如何构建OAuth2.0服务器的OAuth2.0之后,我仍然didn't understand对我full concept of OAuth是否需要它感到困惑,或者我需要一些其他的身份验证系统.
我的系统需要的是我们将向SDK所有客户提供一个并且每个客户都将拥有Application Id并a secret key使用SDK客户端将连接到他们在我们系统中的应用程序.
在application ID将客户他的申请目前映射在我们的系统和client secret key将要验证客户端application.Do里面我还需要基于OAuth2.0的构建认证系统或者我可以建立基于我们需要自己的身份验证系统?
OAUTH2.0有什么用例,何时我们不需要它来实现?
快速背景:我对PHP很有经验,但需要构建我的第一个RESTful API.我想我会尝试Laravel(5.2)并开始觉得很舒服.
我开始在周末为我的项目添加auth,我真的很难让它工作.我得到了基本的Laravel Auth中间件快速工作,但我认为我需要使用OAuth2进行生产(我将构建一个将连接到此服务器的移动应用程序).我正在使用Luca Degasperi OAuth2软件包,它看起来很受欢迎.
我查看了实际文档:https://github.com/lucadegasperi/oauth2-server-laravel/tree/master/docs#readme)
我还浏览了这个教程:https://medium.com/@mshanak/laravel-5-token-based-authentication-ae258c12cfea#.5lszb67xb
而且,最近,我发现这个线程有关在任何工作之前播种OAuth表的必要性:https://github.com/lucadegasperi/oauth2-server-laravel/issues/56
这一切都很棒,但最近Laravel的分布存在一些细微差别.例如,/ app/Http/Kernel.php与我发现的一些示例中显示的略有不同,因为它现在使用中间件组.我以为我正确处理了这些差异(我将OAuthExceptionHandlerMiddleware类添加到$ middlewareGroups的'web'部分而不是$ middleware).我让我的播种机工作了(目前的oauth_scopes表只允许你提供描述,所以我不得不减少上面第三个链接提供的内容).
如果我在routes.php的'web'组中放置测试路径,我会认为这需要OAuth,因为我将OAuth添加到Kernel.php中的'web'中间件组.事实并非如此.如果我这样做,我的路线无需验证.
然后我明确地将OAuth中间件添加到我的测试路由中,如下所示:
Route::get('tests/events', ['middleware' => 'oauth', function() {
$events = App\Event::get();
return response()->json($events);
}]);
Run Code Online (Sandbox Code Playgroud)
这导致500错误("OAuth2ServerServiceProvider.php第126行中的ErrorException:explode()期望参数2为字符串,对象给定").
我感到非常迷茫.这些软件包中的每一个似乎都变得如此之快,以至于没有关于如何启动和运行的完整文档.
我还需要做些什么来实现这个功能?
我有一些依赖于httr包的facebook函数.
通常的程序是必须设置oauth应用程序规范和facebook端点.直到最近,这就像一个魅力,但现在当我尝试通过oauth2.0_token函数获取令牌时,我得到错误:
在浏览器中等待身份验证...按Esc/Ctrl + C中止身份验证完成.Fejl i init_oauth2.0(self $ endpoint,self $ app,scope = self $ params $ scope,:Bad Request(HTTP 400).
你看我的代码如下:
facebook_app <- oauth_app("facebook", key = "XXXX", secret = "YYYY")
# end point
facebook_ep <- oauth_endpoint(
authorize = "https://www.facebook.com/dialog/oauth",
access = "https://graph.facebook.com/oauth/access_token")
# token from endpoint and oauth
fb.token <- oauth2.0_token(facebook_ep, facebook_app, user_params = facebook_ep)
Run Code Online (Sandbox Code Playgroud)
我去过各种帖子和论坛,但我还没有找到解决方案的运气.
oauth ×10
oauth-2.0 ×5
javascript ×2
angularjs ×1
asp.net ×1
asp.net-core ×1
asp.net-mvc ×1
c# ×1
coldfusion ×1
go ×1
google-api ×1
httr ×1
laravel-5 ×1
multi-tenant ×1
node.js ×1
owin ×1
r ×1
rest ×1
security ×1