标签: oauth

Facebook OAuth"此网址的域名未包含在应用的域中"

首先让我说我已经搜索了这个问题的答案已经有一段时间了......

我正在尝试设置Facebook OAuth以使用我的机器上本地开发的应用程序.一切都与Facebook授权完美配合UNTIL我从使用localhost转移到另一个域名(仍然是我的机器本地.)现在我收到以下错误.

无法加载网址:此网址的域名未包含在应用的域中.要加载此网址,请将应用的所有域和子域添加到应用设置中的应用域名字段中.

我的主机文件包含127.0.0.1 photovote.dev (完美的工作)

我的应用程序中的重定向(使用Socialite)是 http://photovote.dev/auth/facebook/callback

在我的Facebook应用程序设置中...

  • 我的App域名是 photovote.dev
  • 我的网站网址是 http://photovote.dev/
  • 我的有效OAuth重定向URI是 http://photovote.dev/auth/facebook/callback

错误消息时的URL是..

https://www.facebook.com/v2.5/dialog/oauth?client_id=XXXXXXXXXXXXXXX&redirect_uri=http%3A%2F%2Fphotovote.dev%2Fauth%2Ffacebook%2Fcallback&scope=email&response_type=code&state=0ztcKhmWwFLtj72TWE8uOKTcf65JmePtG95MZLDD

我不知道问题是什么......

屏幕截图1
屏幕截图

屏幕截图2 在此输入图像描述

facebook oauth facebook-graph-api laravel laravel-socialite

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

为什么访问令牌会过期?

我刚刚开始使用Google API和OAuth2.当客户端授权我的应用程序时,我会获得一个"刷新令牌"和一个短暂的"访问令牌".现在每次访问令牌到期时,我都可以将刷新令牌发送给Google,他们会给我一个新的访问令牌.

我的问题是访问令牌到期的目的是什么?为什么不能只使用持久访问令牌而不是刷新令牌?

此外,刷新令牌是否到期?

有关Google OAuth2工作流程的详细信息,请参阅使用OAuth 2.0访问Google API.

oauth google-api oauth-2.0 google-oauth

205
推荐指数
4
解决办法
10万
查看次数

OAuth究竟是什么(开放授权)?

OAuth究竟是什么(开放授权)?

我收集了一些信息

但我想学习并了解更多.我正在寻找有关生命周期的信息.为什么大多数社交网络都依赖于这种开放协议?

它会在不久的将来成为各种技术(例如ASP.NET)的事实吗?

oauth

199
推荐指数
6
解决办法
11万
查看次数

为移动应用程序创建API - 身份验证和授权

概观

我正在寻找为我的应用程序创建(REST)API.初始/主要目的是供移动应用程序(iPhone,Android,Symbian等)使用.我一直在研究基于Web的API的身份验证和授权的不同机制(通过研究其他实现).我已经掌握了大部分基本概念,但我仍在寻找一些领域的指导.我想做的最后一件事就是重新发明轮子,但我找不到任何符合我标准的标准解决方案(不过我的标准是我的误导,所以也可以随意批评).此外,我希望API对于使用它的所有平台/应用程序都是相同的.

OAuth的

我会继续向oAuth抛弃我的反对意见,因为我知道这可能是第一个提供的解决方案.对于移动应用程序(或更具体地说是非Web应用程序),离开应用程序(转到Web浏览器)进行身份验证似乎是错误的.此外,没有办法(我知道)浏览器将回调返回给应用程序(特别是跨平台).我知道有几个应用程序可以做到这一点,但它只是感觉不对,并且在应用程序用户体验中取得了突破.

要求

  1. 用户在应用程序中输入用户名/密码
  2. 每个API调用都由调用应用程序标识.
  3. 开销保持在最低限度,auth方面对开发人员来说非常直观.
  4. 该机制对于最终用户(他们的登录凭证未公开)以及开发人员(他们的应用程序凭证未公开)都是安全的.
  5. 如果可能,不要求https(绝不是硬性要求).

我目前对实施的看法

外部开发人员将请求API帐户.他们将得到一个apikey和apisecret.每个请求至少需要三个参数.

  • apikey - 在注册时交给开发人员
  • timestamp - 兼作给定apikey的每条消息的唯一标识符
  • hash - 时间戳的哈希值+ apisecret

需要apikey来识别发出请求的应用程序.时间戳的作用与oauth_nonce类似,可以避免/减轻重放攻击.哈希确保请求实际是从给定apikey的所有者发出的.

对于经过身份验证的请求(代表用户完成的请求),我仍然未决定使用access_token路由或用户名和密码哈希组合.无论哪种方式,在某些时候都需要用户名/密码组合.因此,当它发生时,将使用几条信息(apikey,apisecret,timestamp)+密码的散列. 我喜欢这方面的反馈. 仅供参考,他们必须首先对密码进行哈希处理,因为我没有在没有散列的情况下将密码存储在我的系统中.

结论

仅供参考,这不是要求如何构建/构建API,一般只是如何仅在应用程序内处理身份验证和授权.

随机思考/奖金问题

对于只需要apikey作为请求的一部分的API,如何防止apikey所有者以外的其他人能够看到apikey(因为明确发送)并过多地请求推送它们超过使用限制?也许我只是在想这个,但是不应该有一些东西需要验证是否已向apikey所有者验证了请求?在我的情况下,这是apisecret的目的,它不会被显示/传输而不被散列.

说到哈希,md5和hmac-sha1怎么样?当所有值都用足够长的数据(即apisecret)进行散列时,这真的很重要吗?

我之前一直在考虑为用户密码哈希添加每用户/行盐.如果我这样做,应用程序如何能够在不知道使用的盐的情况下创建匹配的哈希?

authentication api rest oauth mobile-application

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

使用CAS或OAuth进行SSO?

我想知道是否应该使用CAS协议或OAuth +某些身份验证提供程序进行单点登录.

示例场景:

  1. 用户尝试访问受保护资源,但未经过身份验证.
  2. 应用程序将用户重定向到SSO服务器.
  3. 如果通过身份验证,则用户从SSO服务器获取令牌.
  4. SSO重定向到原始应用程序.
  5. 原始应用程序根据SSO服务器检查令牌.
  6. 如果令牌没问题,将允许访问,并且应用程序知道用户ID.
  7. 用户执行注销并同时从所有连接的应用程序注销(单点注销).

据我所知,这正是CAS发明的.CAS客户端必须实现CAS协议才能使用身份验证服务.现在我想知道在客户(消费者)网站上使用CAS或OAuth.OAuth是CAS的那部分的替代品吗?OAuth作为新的事实上的标准应该优先考虑吗?是否有一个易于使用的(不是Sun的OpenSSO!)更换为CAS支持不同的方法,如用户名/密码,OpenID的,TLS certifactes认证部...?

语境:

  • 不同的应用程序应该依赖于SSO服务器的身份验证,并且应该使用类似会话的东西.
  • 应用程序可以是GUI Web应用程序或(REST)服务.
  • SSO服务器必须提供用户标识,这是从中央用户信息存储获取有关用户的更多信息(如角色,电子邮件等)所必需的.
  • 单签出应该是可能的.
  • 大多数客户端都是用Java或PHP编写的.

我刚刚发现WRAP,它可能成为OAuth的继任者.这是微软,谷歌和雅虎指定的新协议.

附录

我了解到OAuth不是为验证而设计的,即使它可用于实现SSO,但只能与OpenID等SSO服务一起使用.

OpenID在我看来是"新CAS".CAS具有OpenID未命中的一些功能(如单点注销),但在特定场景中添加缺失部分并不困难.我认为OpenID已被广泛接受,最好将OpenID集成到应用程序或应用程序服务器中.我知道CAS也支持OpenID,但我认为CAS对OpenID来说是可有可无的.

security cas oauth single-sign-on

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

用于合并多个用户帐户的体系结构

好的,我有一个网站,您可以自己注册并登录.您还可以使用您的Facebook,Twitter或linkedin帐户登录.

用户只注册一个帐户很重要.所以不知何故,我想合并用户的帐户,如果他们使用不同的方法登录.解决这个问题的最佳解决方案是什么?

例如,用户使用他的Facebook帐户登录.我使用这些数据自动为他注册一个帐户.我应该发送一封包含我们网站用户名和密码的电子邮件吗?(如果Facebook的政策没有问题).我应该给他们第二个屏幕,他们可以填写用户名和密码吗?但这并不是使用您的Facebook帐户登录的理念.它应该简化您的参与程序.

用户也可以在我们的网站上注册,并在下次使用他的Twitter帐户登录时.如何将这两个帐户合并为一个?什么是最好的方式?

基本上我的问题是:我有4种不同的方式,用户成为我们网站的成员.如果用户决定使用多种方式,我如何确保所有这4种方式只创建一个帐户?什么是最好的流程,以确保它不会成为用户自己的麻烦?


编辑:

在我提出这个问题3年后,我在一系列文章中给出了答案:http://www.sitepoint.com/series/using-social-networks-as-a-login-system/

architecture openid oauth multiple-login

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

什么是端点?

我一直在阅读OAuth,它一直在讨论端点.什么是端点?

authentication api oauth endpoint

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

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

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

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

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

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

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

oauth oauth-2.0

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

使用OAuth保护我的REST API,同时仍允许通过第三方OAuth提供程序进行身份验证(使用DotNetOpenAuth)

我的产品具有简单的REST API,因此产品的用户可以直接与产品功能集成,而无需使用我的Web用户界面.

最近,我一直对各种第三方感兴趣,他们将桌面客户端与API集成,以允许我的产品用户使用该第三方应用程序访问他们的数据.

我已经看到想要使用Twitter的应用程序使用Twitter托管的登录页面进行身份验证,该登录页面授予特定应用程序访问该用户数据的权限.单击"允许"或"拒绝"按钮,验证过程完成.Facebook使用与我能说的最佳机制相同的机制.

经过进一步研究,这似乎是OAuth在行动,并且看到我的API是基于.Net的,我想我应该使用DotNetOpenAuth并提供类似的机制.不幸的是,样本的文档很少(如果有的话),我在网上找到的唯一教程似乎专注于帮助您为用户提供登录机制,以便他们可以使用第三方提供商登录您的网站.

真正想做的是让我的REST API处理我的Web应用程序的所有核心身份验证和业务逻辑,并且我的Web应用程序本质上是另一个仅通过OAuth使用API​​的应用程序.用户可以直接使用他们的用户名和密码在网站上进行身份验证,也可以通过第三方提供商(如MyOpenID或Facebook)进行身份验证,然后网站会以某种方式使用返回的令牌对REST API进行身份验证.

建筑图

它基本上看起来我需要我的API以某种方式托管OAuth服务,但也让用户使用第三方OAuth服务.我不禁想到,我对OAuth没有足够的把握来决定我是否过于复杂化,或者我正在尝试做的事情是好事还是坏事.

有人能给我至少一个我需要采取的步骤的概述,或者我应该考虑做些什么来实现这一目标?或者指点一些教程?或者提出我的建议并告诉我,我(在架构上)这一切都是错的?

openid api rest oauth dotnetopenauth

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

什么是OAuth 2.0承载令牌?

根据RFC6750- OAuth 2.0授权框架:承载令牌使用,承载令牌是:

具有属性的安全令牌,即拥有该令牌的任何一方("持票人")可以以任何其他拥有该令牌的方式使用该令牌.

对我来说,这个定义含糊不清,我找不到任何规范.

  • 假设我正在实现授权提供程序,我可以为持有者令牌提供任何类型的字符串吗?
  • 它可以是随机字符串吗?
  • 它必须是某些属性的base64编码吗?
    它应该散列吗?
  • 服务提供商是否需要查询授权提供程序才能验证此令牌?

谢谢你的指针.

oauth bearer-token

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