当前位置: 首页 > 知识库问答 >
问题:

spring安全-如何在Hybris中使用基本HTTP身份验证访问v2 API?

尉迟彬
2023-03-14

我想使用基本身份验证(用户名/密码)访问v2API,我已经做了下面提到的所有更改。但当我点击web服务URL时,我会弹出一个用于提供用户名/密码的窗口,而该窗口并不接受(验证)我的用户名/密码。我确信我输入了正确的用户名和密码。

web.xml:

<security-role>
<description>
The role that is required to access the application
</description>
<role-name>admin</role-name>
</security-role>
<security-constraint>
<web-resource-collection>
<web-resource-name>RestrictedWebResource</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
<user-data-constraint>
<!-- transport-guarantee can be CONFIDENTIAL, INTEGRAL, or NONE -->
<transport-guarantee>NONE</transport-guarantee>
</user-data-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
</login-config>

security-v2-spring.xml:

<security:http auto-config="true"  use-expressions="true">      <security:intercept-url pattern="/rest/*" access="admin" />
<security:http-basic />
</security:http>
<security:authentication-manager>
<security:authentication-provider>
<security:user-service>
<security:user name="ash" password="ash" authorities="admin" />
</security:user-service>
</security:authentication-provider>
</security:authentication-manager>

tomcat-users.xml:

<?xml version='1.0' encoding='utf-8'?>
<tomcat-users>
<role rolename="manager"/>
<role rolename="admin"/>
<user username="ash" password="ash" roles="admin,manager"/>
</tomcat-users>

配置/local.properties:

hybris.security.http.basic.auth.enable=true
hybris.security.http.basic.auth.username=ash
hybris.security.http.basic.auth.password=ash

tomcat-users.xml位置在server.xml中也已正确配置

<Resource name="UserDatabase" auth="Container"
type="org.apache.catalina.UserDatabase"
description="User database that can be updated and saved"
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
pathname="conf/tomcat-users.xml" />

我尝试访问的endpointURL是

https://localhost:9002/rest/v2/**/**/**

通常的管理控制台admin/NIMDA也不起作用。一个多星期以来我都在为这件事折腾。任何帮助都会很大。提前道谢。

共有1个答案

弘靖琪
2023-03-14

从URL中可以看出,您似乎正在尝试访问OCC API。
访问OCC与常规身份验证无关。
您需要使用OAuthClientDetails模型创建OAuth客户端,并给予其适当的授权。示例-

INSERT_UPDATE OAuthClientDetails;clientId[unique=true];resourceIds;scope;authorizedGrantTypes;clientSecret;authorities
                                ;abc;hybris;basic;authorization_code,refresh_token,password,client_credentials;password;ROLE_TRUSTED_CLIENT
 类似资料:
  • 问题内容: 对于某些Django视图,我创建了一个执行基本HTTP访问身份验证的装饰器。但是,在用Django编写测试用例时,花了我一段时间来弄清楚如何对视图进行身份验证。这是我的方法。我希望有人觉得这有用。 问题答案: 这是我的做法: 注意:您还需要创建一个用户。

  • 我尝试了angular.js,并从一个restful api的web-ui开始(使用超文本传输协议基本授权)。这真的很好,除了授权工作。 到目前为止,我使用的是设置密码,但大多数情况下浏览器会打开http basic auth的默认登录表单。另一个奇怪的行为是angular请求不包含授权头(选项和GET请求都不包含)。我还尝试使用header配置在每个请求上设置此header,但这也不起作用。 有

  • 我很确定这是在一个不同的线程中处理的,但是我遇到的那些线程并不清楚。 我只是想找到一些关于如何在Spring Boot中使用安全的RESTful API的好例子或文档;使用API密钥或基本身份验证。

  • 问题内容: 如何在AngularJs中使用基本身份验证?我已经在Google上搜索了,但是资源对我来说不起作用。我 非常 新AngularJS 问题答案: 假设您的html定义如下: 您可以使用以下基本身份验证将后端连接到rest api: 请注意,此代码的大部分是方法。如果不需要支持IE9及更低版本,则可以将其替换为本地JS实现- atob()和btoa():https : //develope

  • 问题内容: 如何在Golang网站上实施基本身份验证?这样,当有人访问某个页面时,他们的 浏览器 会提示他们登录。 问题答案: 为了强制用户进行身份验证/在用户浏览器中显示基本身份验证提示,请发送标头 因此,如果您有通话,您可以 这将导致浏览器打开您所指的提示。

  • 问题内容: 以下代码成功连接到我的Ruby on Rails API,并使用AFNetworking返回JSON。我需要做什么来进行编辑以传递用户名和密码,以便我的API可以使用HTTP基本身份验证? 我已经阅读了他们的文档,但是我对Objective-C和AFNetworking还是陌生的,目前还没有意义。 问题答案: AFNetworking 2.x的答案已更新 对于AFNetworking