gpt4 book ai didi

authorization - 如何在 Olingo ODataServiceFactory 中获取经过身份验证的用户的 ID

转载 作者:行者123 更新时间:2023-12-02 03:35:26 25 4
gpt4 key购买 nike

我正在尝试读取调用我的 OData 服务的用户的用户 ID。

在我的 web.xml 中,OData servlet 是一个保护区

<servlet>
<servlet-name>EJODataServlet</servlet-name>
<servlet-class>org.apache.cxf.jaxrs.servlet.CXFNonSpringJaxrsServlet</servlet-class>
<init-param>
<param-name>javax.ws.rs.Application</param-name>
<param-value>org.apache.olingo.odata2.core.rest.app.ODataApplication</param-value>
</init-param>
<init-param>
<param-name>org.apache.olingo.odata2.service.factory</param-name>
<param-value>com.wombling.odata.service.EJServiceFactory</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>EJODataServlet</servlet-name>
<url-pattern>/EJOData.svc/*</url-pattern>
</servlet-mapping>
<login-config>
<auth-method>FORM</auth-method>
</login-config>
<security-constraint>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/a/*</url-pattern>
<url-pattern>/index.html</url-pattern>
<url-pattern>*.html</url-pattern>
<url-pattern>/EJOData.svc/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>extension_user</role-name>
</auth-constraint>
</security-constraint>

当我创建工厂来响应查询时:

public class EJServiceFactory extends ODataServiceFactory {

@Override
public ODataService createService(ODataContext ctx) throws ODataException {
return RuntimeDelegate
.createODataSingleProcessorService(
new AnnotationEdmProvider(
"com.wombling.odata.models"),
new EJODataProcessor("admin")); //TODO this should not be hardcoded
}

}

我看不出有什么方法可以从 ODataContext 中获取已通过身份验证的用户。如果我要使用基本身份验证 - 那么我可以只获取 header ,但我没有使用基本身份验证,而是使用 OAuth2 承载 token (由 SAML 断言创建)。

我希望 ODataContext 能让我访问请求的用户 ID,但没有成功。我可以使用其他方法吗?或者我是否需要强制调用应用程序在请求 header 中插入用户 ID(对我来说似乎不太理想!)

最佳答案

通过 ODataContext 对象检索请求对象有点棘手。试试这个:

HttpServletRequest r = (HttpServletRequest) ctx.getParameter(ODataContext.HTTP_SERVLET_REQUEST_OBJECT); 

ctx 是您的 ODataContext 类实例。从请求对象中,您可以获得所需的一切。

关于authorization - 如何在 Olingo ODataServiceFactory 中获取经过身份验证的用户的 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23730910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com