0

我有一个运行 UAA 示例应用程序以及 Java 登录服务器的部署。我已经分别使用自定义 uaa.yml 和 login.yml 配置了我的 UAA 和登录服务器。我通过查看 /uaa/uaa/src/main/webapp/WEB-INF/spring/oauth-clients.xml 的内容,根据“登录”客户端的详细信息填充了 uaa.yml,如下所示:

    <entry key="login">
    <map>
        <entry key="id" value="login" />
        <entry key="secret" value="loginsecret" />
        <entry key="scope" value="openid,uaa.user" />
        <entry key="authorized-grant-types" value="client_credentials,authorization_code" />
        <entry key="authorities" value="oauth.login" />
        <entry key="autoapprove" value="true" />
    </map>
</entry>

在我的 uaa.yml 中进行了相应的配置。这似乎工作正常,我可以登录并浏览示例应用程序。

但是,当我随后访问示例应用程序中的 /approvals 页面时,我在approvals.jsp 中收到了一个javascript 错误,这显然是由于messages.properties 文件中没有任何对应的scope.uaa.user 条目引起的。

[2013-03-20 18:05:52.787] login/login-server - ???? [http-8080-1] .... DEBUG --- DispatcherServlet: Could not complete request
org.apache.jasper.JasperException: javax.servlet.ServletException: javax.servlet.jsp.JspTagException: No message found under code 'scope.uaa.user' for locale 'en_US'.
    at org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:238)
    at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:262)
    at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1180)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:950)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)  
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    ...

所以,问题是——登录服务器真的需要范围“uaa.user”吗?如果是这样,messages.properties 文件中的条目应该说什么?我找不到为 uaa.user 范围提供商定文本描述的任何地方。

作为一种解决方法,我只是在messages.properties 中为该范围编写了我自己的文本,并且批准页面现在呈现OK。

谢谢,约翰

4

2 回答 2

0

登录服务器无法预测可用的范围,因为某些范围可能是应用程序自定义的。该错误已在此处修复 https://github.com/cloudfoundry/login-server/commit/c39aa19db33c12a0d9740e2c0a53698b87889ebc 如果没有消息可用于表示范围,只需打印出范围名称即可。

于 2013-12-17T15:02:57.433 回答
0

是的,登录服务器需要“uaa.user”。您可以在 messages.properties 文件中包含任何文本字符串,您将在应用程序中相应地使用它。让我知道这是否有帮助。

谢谢,

  • 希特什
于 2013-03-21T21:00:08.210 回答