Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在web应用程序中实现auth_Java_Configuration_Oauth_Openid - Fatal编程技术网

Java 在web应用程序中实现auth

Java 在web应用程序中实现auth,java,configuration,oauth,openid,Java,Configuration,Oauth,Openid,我想对我的web应用程序使用auth应用程序来跳过用户的注册过程。我正在使用java库来实现auth 1.我已经用twitter等身份验证提供商创建了密钥。但我在系统本地运行此应用程序时遇到问题,因为我在生成密钥时提供了所需的站点地址 2.我无法配置我的主机文件,使其将属性设置为生成密钥时提供的地址 下面是正在执行的一段代码 package com.auth.actions; import javax.servlet.http.HttpServletRequest; import javax.

我想对我的web应用程序使用auth应用程序来跳过用户的注册过程。我正在使用java库来实现auth

1.我已经用twitter等身份验证提供商创建了密钥。但我在系统本地运行此应用程序时遇到问题,因为我在生成密钥时提供了所需的站点地址

2.我无法配置我的主机文件,使其将属性设置为生成密钥时提供的地址

下面是正在执行的一段代码

package com.auth.actions;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.util.RequestUtils;
import org.brickred.socialauth.AuthProvider;
import org.brickred.socialauth.AuthProviderFactory;

import com.auth.form.AuthForm;

public class SocialAuthenticationAction extends Action {

        final Log LOG = LogFactory.getLog(SocialAuthenticationAction.class);

        @Override
        public ActionForward execute(final ActionMapping mapping,
                        final ActionForm form, final HttpServletRequest request,
                        final HttpServletResponse response) throws Exception {

                AuthForm authForm = (AuthForm) form;
                String id = authForm.getId();
                System.out.println("in authentieavtaonsdfsaf");
                AuthProvider provider = AuthProviderFactory.getInstance(id);
                String returnToUrl = RequestUtils.absoluteURL(request,"/socialAuthSuccessAction.do").toString();
                authForm.setProvider(provider);
                String url = provider.getLoginRedirectURL(returnToUrl);
                LOG.info("Redirecting to: " + url);
                if (url != null) {
                        ActionForward fwd = new ActionForward("openAuthUrl", url, true);
                        return fwd;
                }
                return mapping.findForward("failure");
        }
}
在第23行,出现了null指针异常,表示提供者为null

错误消息::

2011年1月23日12:26:23 AM org.apache.catalina.core.StandardWrapperValve 为调用SEVERE:Servlet.service() servlet操作引发异常 位于的java.lang.NullPointerException java.util.Properties$LineReader.readLine(未知 来源)在 java.util.Properties.load0(未知 来源)在 java.util.Properties.load(未知 来源)在 org.brickred.socialauth.AuthProviderFactory.getInstance(AuthProviderFactory.java:72) 在 com.auth.actions.SocialAuthenticationAction.execute(SocialAuthenticationAction.java:31) 在 org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419) 在 org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224) 在 org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194) 在 org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414) 在 javaservlet.http.HttpServlet.service(HttpServlet.java:707) 在 javaservlet.http.HttpServlet.service(HttpServlet.java:820) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 在 org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) 在 org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 在 org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 在java.lang.Thread.run处(未知 (来源)


AuthProvider provider=AuthProviderFactory.getInstance(id)
正在抛出NPE,因为应该加载不存在的属性文件:
java.util.Properties.load(未知源)

但我不知道,哪一个不见了。我确信你必须包括一些财产档案

编辑 在这个示例项目中,您可以看到一个名为oauth_consumer.properties的文件
可能是缺少属性文件?

@ckuethbach我试图在本地运行此应用程序,但在配置时遇到问题。在从twitter生成oauth密钥时,我将返回url作为网站地址,例如:www.xyz.com。因此twitter将在该地址返回响应,但我希望在本地主机上运行。我已准备好修改我的主机文件将localhost指向www.xyz.com。但仍然会遇到相同的问题。Thanxs。现在我能够找到丢失的属性文件。但现在我又面临一个问题,这在我的localhost上运行正常,但当我尝试在服务器上运行时,它会显示错误页面。