我正在尝试使用Google Cloud Endpoints构建API。
由于Cloud Endpoints除了Google自己的OAuth外没有提供认证,因此我想建立自己的认证。因此,我想在servlet过滤器中访问为API提供的参数(例如@Named(“token”)token)。
不幸的是,在httpRequest中找不到任何提供的信息。这正常吗?有可能访问这些参数吗?
如果有人能帮助我,我会非常感激!
更新:
根据jirungaray的信息,我尝试使用标头构建身份验证,但遇到了同样的问题。使用REST客户端发送一些标头以访问标头中的令牌时,发现无法在API资源方法中访问自定义HTTP标题。
在我的过滤器中,我尝试从标头中访问令牌。
我尝试做这样的事情的原因是,我正在使用Guice进行依赖注入,希望我的令牌被注入到另一个对象中。
使用Guice后,我有了以下Provider,使用Token来每请求注入一个FacebookClient(使用该Token)。
由于Cloud Endpoints除了Google自己的OAuth外没有提供认证,因此我想建立自己的认证。因此,我想在servlet过滤器中访问为API提供的参数(例如@Named(“token”)token)。
不幸的是,在httpRequest中找不到任何提供的信息。这正常吗?有可能访问这些参数吗?
如果有人能帮助我,我会非常感激!
更新:
根据jirungaray的信息,我尝试使用标头构建身份验证,但遇到了同样的问题。使用REST客户端发送一些标头以访问标头中的令牌时,发现无法在API资源方法中访问自定义HTTP标题。
在我的过滤器中,我尝试从标头中访问令牌。
@Override
public void doFilter(
ServletRequest request, ServletResponse response, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest httpRequest = (HttpServletRequest) request;
String authToken = httpRequest.getHeader(Constants.AUTH_TOKEN);
...
chain.doFilter(request, response);
}
我尝试做这样的事情的原因是,我正在使用Guice进行依赖注入,希望我的令牌被注入到另一个对象中。
使用Guice后,我有了以下Provider,使用Token来每请求注入一个FacebookClient(使用该Token)。
@Provides
public FacebookClient getFacebookClientProvider(@Named("fbToken") Provider<String> fbToken) {
return new DefaultFacebookClient(fbToken.get(), Version.VERSION_2_2);
}
如Guice Wiki(SevletModule)中所述,这使用servlet过滤器从请求中获取信息。
有没有办法在Cloud Endpoints中实现这种依赖注入?