如何锁定Cloud Endpoints中的API Explorer,使其仅适用于特定的Gmail帐户(例如您的console.developers.google.com电子邮件)?
有人告诉我,我可以在我的Cloud Endpoints项目的web.xml文件中使用安全约束,如下所示:
<security-constraint>
<web-resource-collection>
<web-resource-name>admin</web-resource-name>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
但在Using Auth with Endpoints docs中它说:
&#34;您必须按照此页面上提供的说明指定端点身份验证。请注意,您无法按照Security and Authentication下提供的说明设置用户登录要求来配置web.xml文件,因为这会导致部署失败。&#34;
所以你不能这样做......
任何人都知道如何在API Explorer中将Oauth2身份验证限制为特定的Gmail帐户?因为是默认的,您可以使用任何 gmail帐户登录,这将使您对Oauth2进行身份验证,然后您可以执行任何使用Oauth2与com.google.appengine.api.users.User用户的API方法参数在他们的方法中。
答案 0 :(得分:1)
您应该能够检索用户的身份验证令牌并验证其客户端ID是否是API Explorer客户端ID。客户端ID位于Authorization
。身份验证令牌将通过access_token
标头或bearer_token
或HttpServletRequest
查询参数传递。可以通过向API方法添加GoogleIdTokenVerifier verifier = new GoogleIdTokenVerifier.Builder(
Client.getInstance().getHttpTransport(),
Client.getInstance().getJsonFactory()).build();
GoogleIdToken token = verifier.verify(stringToken);
String clientId = token.getPayload().getAuthorizedParty();
参数来访问标头或查询参数。
要验证ID令牌,您需要使用Google的API客户端库:
{{1}}
答案 1 :(得分:1)
有关限制谁可以通过API Explorer执行API的方法,请参阅Cloud Endpoints: Control who can execute API through API Explorer。
答案 2 :(得分:0)
如果你真的想停止阻止它,除了一封电子邮件,使用&#34;用户API&#34;将允许您在代码中获取经过身份验证的用户的电子邮件。
之后,检查电子邮件是否是您授权的唯一电子邮件,这将完全阻止其他人。