Tag: oauth 2.0

使用Spring Security + WSO2 Identity Server的OAuth 2.0

我正在开发一个Web应用程序来公开由OAuth 2.0保护的许多RESTful服务。 这是计划的架构: 1- OAuth授权提供商: WSO2身份服务器(IS) 2- OAuth资源服务器:使用以下技术的Java Web应用程序: Jersey(实现和公开Web服务) Spring Security(实现OAuth资源服务器部分) 我已经看到了几个关于如何使用WSO2 IS作为授权服务器+ WSO2 ESB作为资源服务器来保护RESTful服务的示例( ex1 , ex2 , ex3等)。 这不是我需要的。 遗憾的是,授权服务器和资源服务器之间的交互超出了OAuth2 RFC的范围。 所以,我找不到它应该是什么样子。 这是我的问题: 如何配置spring security作为资源服务器来validation外部OAuth提供程序(例如WSO2 IS)发出的访问令牌? 资源服务器应该如何识别给定访问令牌的范围? 如何识别来自WSO2 IS的访问令牌的资源所有者? 谢谢

自定义SpringSecurity OAuth 2错误输出(未经授权)

我们使用Spring Security OAuth2来保护我们的REST服务(用于服务器到服务器之间的通信,无需用户参与)。 但是,当试图在浏览器中访问受保护资源时,它将显示: An Authentication object was not found in the SecurityContext unauthorized 我们希望这是我们自己选择的自定义页面。 有办法吗? 设置访问被拒绝页面是行不通的。 首先,它需要定义我们没有的登录页面,因为这是一个纯粹的服务器到服务器通信。 对于另一个,这个属性据说自从Spring 3.0以后就被弃用了。 无论如何..调试我的方式进入OAutherror handling。 并且发现响应似乎以某种方式通过我在错误页面上看到的信息得到了丰富。 显然没有完成任何页面渲染,所以看起来没有要替换的错误页面..?! 至少我们想要隐藏我们使用OAuth的事实,如果我们不能拥有“真正的”页面,只显示一个基本的“拒绝”文本。所以也许我将不得不扩展spring安全处理程序或添加一个自定义filter修改响应?! 也许重定向到我们的错误页面? 谢谢! 编辑 对于我们当前的设置,请在此查看我的其他问题

是否可以在没有重定向服务器的情况下使用OAuth 2.0?

我正在尝试创建一个与SurveyMonkey API交互的本地基于Java的客户端。 SurveyMonkey需要使用OAuth 2.0的长期访问令牌,我不是很熟悉。 我一直在谷歌搜索这几个小时,我认为答案是否定的,但我只是想确定: 我是否可以编写一个与SurveyMonkey交互的简单Java客户端, 而无需在某些云中设置我自己的重定向服务器 ? 我觉得必须拥有自己的在线服务才能收到OAuth 2.0生成的持有人令牌。 是否有可能我无法让SurveyMonkey直接向我的客户发送承载令牌? 如果我要在某处设置我自己的自定义Servlet,并将其用作redirect_uri,那么正确的流程如下: 来自SurveyMonkey的Java客户端请求承载令牌,redirect_uri是我自己的自定义servlet URL。 SurveyMonkey将令牌发送到我的自定义servlet URL。 Java客户端轮询自定义servlet URL,直到令牌可用? 它是否正确?

如何通过我的基本身份validation配置允许“/ api / **”并进入我在Spring Security中的oauth配置

我有一个使用Basic Auth和OAuth2的应用程序。 某些URL使用Basic Auth授权,“/ api / **”使用OAuth2授权。 目前,我有两个Java配置文件( WebSecurityConfigurerAdapter和ResourceServerConfigurerAdapter ) 每个配置文件都定义了一个public void configure(HttpSecurity http)方法。 我遇到的麻烦是我需要一种优雅的方式告诉我的应用程序是否使用基本的auth或oauth2给出url请求。 目前我正在使用requestMatchers来实现这一目标: @EnableWebSecurity public class WebSecurityConfig extends WebSecurityConfigurerAdapter { @Override protected void configure(HttpSecurity http) throws Exception { http .csrf().disable() .requestMatchers() .antMatchers(“/*”, “/login/**”, “/reviews/**”) .and() .authorizeRequests() .antMatchers(“/*”).permitAll() .antMatchers(“/js/**”).permitAll() .antMatchers(“/img/**”).permitAll() .formLogin() .loginPage(“/login”) .successHandler(loginSuccessPostHandler) .permitAll() .and() .logout() .logoutSuccessUrl(“/”).permitAll() .and() .apply(getSpringSocialConfigurer()); } } @Configuration public […]

Youtube Analytics和Google服务帐户

目标:实现一个程序(java或python)来检索我在Youtube频道上发布的video中的数据。 该计划将每天(凌晨1:00)推出。 解决方案:要检索数据Youtube,包括每天的观看次数,我认为YouTube Analytics API是最佳解决方案。 我使用Google帐户服务(“GoogleCredential”)对我进行身份validation: static { // Build service account credential. try { // Create a listener for automatic refresh OAuthAccessToken List list = new ArrayList(); list.add(new CredentialRefreshListener() { public void onTokenResponse(Credential credential, TokenResponse tokenResponse) throws IOException { System.out.println(tokenResponse.toPrettyString()); } public void onTokenErrorResponse(Credential credential, TokenErrorResponse tokenErrorResponse) throws IOException { System.err.println(“Error: ” + tokenErrorResponse.toPrettyString()); […]

Google云端硬盘服务帐户返回403 usageLimits

我正在尝试编写一个AppEngine应用程序,将Google文档写入Google云端硬盘,放入一组特定的文件夹并设置访问权限。 我使用旧的DocsList API,但由于刚刚被弃用,我决定更新我的代码(我还有一些额外的function可以添加)。 我面临的问题是:当我使用服务帐户并尝试冒充特定用户时,即使我没有用完任何配额,我也会获得带有usageLimits的403。 这是我正在使用的代码: GoogleCredential credentials = new GoogleCredential.Builder() .setTransport(HTTP_TRANSPORT) .setJsonFactory(JSON_FACTORY) .setServiceAccountId(“xxxxxxxxxxgserviceaccount.com”) .setServiceAccountScopes(DriveScopes.DRIVE) .setServiceAccountPrivateKeyFromP12File( new java.io.File(“xxxx-privatekey.p12”)) .setServiceAccountUser(“user@xxxxxx.org”).build(); 我使用这些凭据来启动我的Drive对象: Drive d = Drive.builder(httpTransport, jsonFactory) .setHttpRequestInitializer(credentials) .setJsonHttpRequestInitializer(new JsonHttpRequestInitializer() { @Override public void initialize(JsonHttpRequest request) { DriveRequest driveRequest = (DriveRequest) request; driveRequest.setPrettyPrint(true); } }).setApplicationName(“MYAPPNAME”).build(); 顺便说一句:我尝试过使用新的Drive(….),但无论我尝试什么,这都行不通。 保持抛出错误,找不到内部方法! 回到这个问题:当我使用’d’来调用类似.files()的东西.get(“SOMEFILEID”)。execute()我得到403 { “code” : 403, “errors” : [ { “domain” : […]

从Oauth2 Google Contacts API获取Userinfo

我得到的错误: com.google.api.client.googleapis.json.GoogleJsonResponseException: 401 Unauthorized { “code” : 401, “errors” : [ { “domain” : “global”, “location” : “Authorization”, “locationType” : “header”, “message” : “Invalid Credentials”, “reason” : “authError” } ], “message” : “Invalid Credentials” } 下面的代码,我正在使用: GoogleCredential credential = new GoogleCredential.Builder() .setTransport(this.TRANSPORT).setJsonFactory(this.JSON_FACTORY) .setClientSecrets(Constants.CLIENT_ID, Constants.CLIENT_SECRET).build(); credential.setAccessToken(tokenResponse.getAccessToken()); credential.setAccessToken(tokenResponse.getRefreshToken()); 到这里,我得到刷新令牌,访问令牌等 Oauth2 userInfoService = new Oauth2.Builder(this.TRANSPORT, this.JSON_FACTORY, credential.getRequestInitializer()) .setApplicationName(Constants.APPLICATION_NAME).build(); […]

无法使用Google API 获取服务帐户流的令牌

我正在使用Google API(版本为google-oauth-java-client-1.12.0-beta)获取OAuth2访问令牌但返回“invalid_grant”。 参考: https : //developers.google.com/accounts/docs/OAuth2ServiceAccount 这是代码: import com.google.api.client.auth.jsontoken.JsonWebSignature; import com.google.api.client.auth.jsontoken.JsonWebToken; import com.google.api.client.auth.jsontoken.RsaSHA256Signer; import com.google.api.client.auth.oauth2.TokenRequest; import com.google.api.client.auth.oauth2.TokenResponse; import com.google.api.client.http.GenericUrl; import com.google.api.client.http.HttpTransport; import com.google.api.client.http.javanet.NetHttpTransport; import com.google.api.client.json.JsonFactory; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.util.Clock; import java.io.FileInputStream; import java.io.IOException; import java.security.GeneralSecurityException; import java.security.KeyStore; import java.security.KeyStoreException; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.UnrecoverableKeyException; import java.security.cert.CertificateException; public class TestClient { private static PrivateKey getPrivateKey(String […]

使用OAuth 2.0进行Java和Google Spreadsheets API授权

我想使用Java阅读Google Spreadsheets,推荐的方法是使用Google Spreadsheets API 。 当您想要使程序安全时,问题就开始了,因此他们鼓励您使用OAuth 2.0。 在官方页面中,他们展示了如何仅使用.NET执行此操作并说“ Java客户端库当前不支持OAuth 2.0 ”,并且他们提供了使用OAuth 1.0或使用直接电子邮件和密码进行 Client Login等替代方案。 这是肯定的吗?,没有办法通过Java进行OAuth 2.0身份validation,可能不是直接使用Java客户端库,而是通过具有特定参数的请求。 请相信任何建议。

google oauth2如何获取服务帐户的私钥

有人可以告诉我如何从服务帐户的谷歌云控制台下载证书。 我正在寻找各地。 我已经下载了应用程序授权凭证“client_secret.json” client_secret.json有一个键“client_x509_cert_url”,它将我带到json文件中,该文件中嵌入了2个证书。 这是证书吗? 如果他们是如何在java代码中使用它。 我在这里有点迷茫。