我一直在研究如何使用Cloud Endpoints验证您的客户端(Android,iOS,web-app),而无需用户按照文档显示的方式使用他们的Google帐户登录.
这样做的原因是我想要保护我的API或"将其锁定"仅限于我指定的客户端.有时我会有一个没有用户登录的应用程序.我讨厌纠缠我的用户现在登录,因此我的API是安全的.或者其他时候,我只想在网站上管理自己的用户,而不是使用Google+,Facebook或其他任何登录身份验证.
首先,让我首先展示您使用Cloud Endpoints API使用文档中指定的Google帐户登录信息验证Android应用的方式.在那之后,我将向您展示我的发现以及我需要帮助的解决方案的潜在领域.
(1)指定授权向API后端发出请求的应用程序的客户端ID(clientIds),以及(2)将User参数添加到要通过授权保护的所有公开方法.
public class Constants {
public static final String WEB_CLIENT_ID = "1-web-apps.apps.googleusercontent.com";
public static final String ANDROID_CLIENT_ID = "2-android-apps.googleusercontent.com";
public static final String IOS_CLIENT_ID = "3-ios-apps.googleusercontent.com";
public static final String ANDROID_AUDIENCE = WEB_CLIENT_ID;
public static final String EMAIL_SCOPE = "https://www.googleapis.com/auth/userinfo.email";
}
import com.google.api.server.spi.auth.common.User; //import for the User object
@Api(name = "myApi", version = "v1",
namespace = @ApiNamespace(ownerDomain = "${endpointOwnerDomain}",
ownerName = "${endpointOwnerDomain}",
packagePath="${endpointPackagePath}"),
scopes = {Constants.EMAIL_SCOPE},
clientIds = …Run Code Online (Sandbox Code Playgroud) authentication google-app-engine android google-cloud-endpoints google-oauth
有人可以解释与其他OAuth2提供商实施登录过程的步骤此链接Google Cloud Endpoints与另一个oAuth2提供商提供的关于编写自定义身份验证的信息很少,但我想对于像我这样的初学者来说还不够,请详细说明.特别是对Facebook感兴趣.
我们的网络应用程序不提供Google帐户身份验证.我们使用WebApp2身份验证实现了自己的身份验证:http://webapp-improved.appspot.com/tutorials/auth.html .
我们希望将Cloud Endpoints用作移动应用/第三方开发人员的API,但我们仍然希望使用oAuth2进行身份验证.
实现这个步骤需要哪些步骤?我们是否需要在AppEngine上设置我们自己的oAuth服务器并且Google客户端库是否兼容?
我正在开发一个带有GAE后端的Android应用程序,用于会话等.我想使用Google Cloud Endpoint并使用自定义身份验证用户模型开发API.我不想使用谷歌的oauth.我想实现一个简单的电子邮件/传递用户身份验证模型与基于会话的令牌.我对GAE没有任何经验.我曾在python和它的框架(django,flask等)工作过.
过去一周我一直在寻找这种样本项目(没有运气).
有人可以提供一些示例代码/资源,介绍如何使用会话管理和csrf保护以及ssl来实现这样的端点吗?
Ps:如果您认为云端点对我的应用程序(服务器后端)来说不是一个好方法,那么请指导我一个可以帮助我创建自己的RESTful api并使用JSON编码+ crsf保护和会话管理的源代码.
我已经看到以下内容,但没有一个有详细的解决方案:
我有一个基于Google Cloud Endpoints的API,我想使用JWT(Json Web Tokens)进行授权.我可以为每个包含令牌的请求设置Authorization标头,它可以正常工作.我知道Endpoints在Oauth2中使用了这个标题,这是我的问题.使用自定义令牌的授权标头是否正确?GAE日志:
D 12:38:44.375 Checking for id_token.
D 12:38:44.376 id_token verification failed: Unexpected encryption algorithm: u'HS256'
D 12:38:44.376 Checking for oauth token.
D 12:38:44.384 Oauth framework user didn't match oauth token user.
Run Code Online (Sandbox Code Playgroud)
看起来GAE试图将此令牌读作oauth令牌并且它不好,对吧?也许我应该在URL中发送我的令牌?像app-id.appspot.com/_ah/api/my_app/v1/users/get?jwt=TOKEN之类的东西.也许我不应该将JWT与Google Cloud Endpoints一起使用?