Tag: oauth 2.0

Google Webmasters API for Java返回空站点列表

我编写了一个简单的网站列表查询代码,该代码使用Oauth和基于Google 文档的 服务帐户 。 正在使用的身份validation密钥文件(.p12)以及帐户都是有效的。 问题是站点列表方法返回一个空列表。 service.sites().list().execute(); 此外,如果我明确尝试通过调用获取经过validation的站点的站点地图 service.sitemaps().list(“my.sample.site.com”).execute(); 我收到了403 Forbidden – “用户没有足够的权限访问网站’sample.site.com’。另请参阅: https : //support.google.com/webmasters/answer/2451999 。” 来自API的错误。 根据我的调试,API完美地加载密钥文件(.p12)并管理访问令牌等没有问题。 尽管如此,我的服务帐户身份validation可能存在问题。 依赖关系: com.google.apis google-api-services-webmasters v3-rev6-1.20.0 示例代码: package webmastertools; import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport; import com.google.api.client.http.HttpTransport; import com.google.api.client.json.JsonFactory; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.services.webmasters.Webmasters; import com.google.api.services.webmasters.WebmastersScopes; import com.google.api.services.webmasters.model.SitesListResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import java.io.File; import java.util.Collections; public class GoogleWebmastersClient { […]

Spring Oauth2。 密码编码器未在DaoAuthenticationProvider中设置

我是Spring Oauth和Spring Security的新手。 我正在尝试在项目中使用client_credentials流程。 现在我设法使用我自己的CustomDetailsS​​ervice来从我系统中已经存在的数据库中获取client_id和密码(secret)。 唯一的问题是我无法更改AuthorizationServer使用的DaoAuthenticationProvider中的密码编码器 – 它默认设置为PlaintextPasswordEncoder。 我无法按照它的方式配置它,例如SHAPasswordEncoder。 它总是使用明文编码器。 我可能不太了解流程,因为我是Spring的新手。 这是我的一些代码(没有DaoAuthenticationProvider的工作配置): SecurityConfig.java @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { private static final String RESOURCE_ID = “restservice”; @Override public void configure(WebSecurity web) throws Exception { web.ignoring().antMatchers(“/register/**”); } @Override public AuthenticationManager authenticationManagerBean() throws Exception { return super.authenticationManagerBean(); } @Override protected void configure(AuthenticationManagerBuilder auth) throws Exception { […]

Google Endpoints – Android GoogleAuthIOException Tic Tac Toe – 删除了clientIds

我下载了Google Endpoints Tic Tac Toe示例 – Java中的服务器代码。 为了快速运行它,我从API定义中删除了clientIds,因此我可以很快看到它在API Explorer中运行: @Api(name = “tictactoe”, version = “v1”) public class ScoresV1 { … 我可以使用API​​资源管理器运行以下方法,打开OAuth并使用我的gmail accoumnt进行身份validation。 我可以在调试器中看到“user”对象设置为该帐户: @ApiMethod(name = “scores.list”) @SuppressWarnings(“unchecked”) public List list(@Nullable @Named(“limit”) String limit, @Nullable @Named(“order”) String order, User user) throws OAuthRequestException, IOException { … 然后我继续生成Android客户端(仍然删除了clientIds)。 我还下载了官方Android应用程序来获取UI类和res文件(帐户选择器和游戏界面)。 这就是我被困住的地方。 在真正的Android设备上运行时,TictactoeActivity中的以下代码抛出了GoogleAuthIOException: @Override protected ScoreCollection doInBackground(Void… unused) { ScoreCollection […]

为Facebook API调用Servlet以获取访问令牌

问题编辑: 我正在使用Captain Casa框架。 我有一个按钮,将打开一个新标签并转到Facebook登录页面。 public void goTofbPage(javax.faces.event.ActionEvent event){ FBConnection fbConnection = new FBConnection(); setBrowserUrl(fbConnection.getFBAuthUrl()); m_browserTrigger.trigger(); } 如果用户成功登录,它将与用户的数据一起重定向到我的页面。 为了从用户那里获取accessToken,我使用了HttpServlet。 但我怎么能称这个HttpServlet? 我真的需要调用它还是会自动运行? 我的jsp看起来像这样。 我已经将它添加到web.xml中了。 MainMenu managedbeans.MainMenu 1 MainMenu /MainMenu 我的Servlet代码: public class MainMenu extends HttpServlet{ private static final long serialVersionUID = 1L; private String code=””; public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { code = […]

官方Spring安全性oauth2示例不起作用(授权代码机制)

根据教程Spring Boot和OAuth2 我有以下项目结构: 以下源代码: SocialApplication.class: @SpringBootApplication @RestController @EnableOAuth2Client @EnableAuthorizationServer @Order(200) public class SocialApplication extends WebSecurityConfigurerAdapter { @Autowired OAuth2ClientContext oauth2ClientContext; @RequestMapping({ “/user”, “/me” }) public Map user(Principal principal) { Map map = new LinkedHashMap(); map.put(“name”, principal.getName()); return map; } @Override protected void configure(HttpSecurity http) throws Exception { // @formatter:off http.antMatcher(“/**”).authorizeRequests().antMatchers(“/”, “/login**”, “/webjars/**”).permitAll().anyRequest() .authenticated().and().exceptionHandling() .authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint(“/”)).and().logout() .logoutSuccessUrl(“/”).permitAll().and().csrf() […]

oauth2 android中的jsonresponse中的invalid_client

我正在为谷歌做oauth2我能够获得授权码但我无法从授权码获取accessstoken。 我得到了无效的json_response { “error”:”invalid_client” } 我已经尝试过更新应用程序的产品名称。 通过这个解决方案 但它没有帮助。 这是获取获取AccessToken的代码。 GetAccessToken public class GetAccessToken { static InputStream is = null; static JSONObject jObj = null; static String json = “”; public GetAccessToken() {} List params = new ArrayList (); Map mapn; DefaultHttpClient httpClient; HttpPost httpPost; public JSONObject gettoken(String address, String token, String client_id, String client_secret, String […]

可以/应该使用spring security中的每个请求刷新OAuth2令牌

我们使用username-password grant将我们的JS客户端连接到我们的REST服务器。 在某种程度上,oauth / token返回的令牌是我们的会话,因为它允许在有限的时间内访问后端。 每当我们使用令牌向后端发出请求时,我们都想刷新该会话/令牌。 我知道服务器发出了这个刷新令牌,我可以使用它在令牌过期后刷新令牌。 问题是:我不想让客户端负责捕获令牌过期的exception,并在令牌过期之前重新validation或安排刷新。 我希望令牌能够刷新,直到它在有限的时间内不再使用 – 就像会话一样。 (我也不希望它发出每个“数据”请求的刷新请求,虽然我想我记得读过,刷新令牌只有一次…?!) 有没有办法在spring security中做到这一点,还是我必须构建一些自定义的令牌存储实现或我选择的任何部分? 因为我无法找到答案(因此是post)我在想:也许这样做是不明智的,尽管我不明白为什么。 如果我可以窃取令牌,我也可以窃取刷新令牌。 所以我想我真的没有看到首先有一个刷新令牌的重点.. 编辑 为了回应Luke Taylor的回答,我将澄清我们的用例。 我们有一个REST服务器,可以保存人员等应用程序数据。 但也提供访问我们的内容管理,并允许客户发布到Facebook。 它封装了应用程序逻辑和数据存储 我们有一个完全成熟的客户端应用程序,它有自己的安全层,只是通过客户端凭证流访问我们的REST服务器上的数据。 谁可以做客户端决定的事情 我们有几个中小型应用程序,比如facebook上的联系人应用程序,它们也使用客户端凭据访问REST服务器上的数据 我们现在正在开发一个客户端应用程序,它只使用javascript访问REST层来完成大客户端应用程序所做的所有工作,但还需要提供一种方法来validation单个用户并允许多租户。 因此,此新客户端应用程序使用用户名密码授予进行身份validation,并使用方法级别安全性来授权用户 因此,我们有一个REST服务器,需要提供对我们的可信应用程序的完全访问权限,该应用程序执行自己的安全性工作,同一服务器需要为我们的新多租户javascript客户端应用程序的用户提供访问权限。 在生产中,我们将有几个REST服务器,每个服务器都有自己的数据库,但核心总是相同的,所以理论上一个服务器应该能够处理所有。

我可以在应用程序中实现SAML和基本弹簧安全性吗?

我需要我们的应用程序,我们需要在我们的应用程序中实现Spring SAML,以便为一个客户启用联合SSO。 但是,我们需要使用spring-security为其他客户维护现有的登录流程。 所以我的问题是我们可以为Web应用程序提供两种安全机制,以便将其视为多租户。 我可以在同一个应用程序中实现OAuth和SAML。 提前致谢..

基于哈希片段的安全性如何工作?

我正在学习OAuth 2.0,无法在隐式授权流程中获得保护访问令牌的方法。 规范中有一些论文和一些看起来相互矛盾的SO答案。 有人可以清理一下吗? 来自SO答案和规范的引言令我感到困惑: (来自规范)用于将访问令牌传递到客户端的重定向URI。 可以向访问资源所有者的用户代理的资源所有者或其他应用程序公开访问令牌。 (来自规范)访问令牌凭证(以及任何机密访问令牌属性)必须在传输和存储中保密,并且仅在授权服务器,访问令牌有效的资源服务器以及客户端之间共享。发出访问令牌。 访问令牌凭证必须仅使用TLS传输。 (来自已接受和赞成的回答 )在隐式流中,访问令牌作为哈希片段传递,只有浏览器知道哈希片段。 浏览器会将哈希片段直接传递到目标网页/重定向URI,即客户端的网页(哈希片段不是HTTP请求的一部分),因此您必须使用Javascript读取哈希片段。 哈希片段不能被中间服务器/路由器拦截(这很重要)。 我的问题: P1表示通过重定向URI和P2传递给客户端的令牌表示传递通道必须是TLS编辑的。 但是P3说哈希片段没有发送到网络 。 如果访问令牌没有发送,那么它是如何到达客户端的,因为它是哈希片段? 无论如何,它必须通过网络发送不是吗? 或者使用重定向URI发送令牌可以在没有网络交易的情 唯一可能的解释 – 在引擎盖下浏览器仅通过网络发送url的非哈希部分,并且在加载新页面之后,只需插入哈希片段并使其可用于JS。 如果我是对的,我仍然无法理解为什么我们不简单地使用可靠,安全的HTTPS通道作为响应参数发送令牌?

使用JDBC和JWT实现Spring OAuth2,并使用基于XML的配置自定义现有授权流

我开始使用Spring OAuth2,在这个过程中,我很难找到相关的教程和内容,主要是因为以下内容 我不想使用Spring Boot 我不想使用Java配置而是使用xml配置 我需要根据我们的特定需求自定义Spring OAuth2授权流程和其他function 我需要禁用一些授权流程 我需要Spring OAuth2来使用自定义用户和角色 我需要在自定义数据库选项卡中使用store oauth_client详细信息 其他的东西 我设法编写了我的实现,解决了上述问题,现在我想分享我的发现,以便拯救他人的痛苦。 请参阅我的答案,了解我所采用的方法,如果您有任何建议,请随时分享您的建议,建议和反馈。 这个问题的主要目标是 获得有关我遵循的方法的反馈,建议和建议 分享我所学到的所有困难,希望能够拯救他人的麻烦,并回馈社区从社区中学到的东西。