标签: basic-authentication

具有基本身份验证的C#Windows应用商店HTTP HTTPClient导致401"未经授权"

我正在尝试向使用BASIC身份验证和https保护的服务发送HTTP GET请求.如果我使用RESTClient Firefox插件这样做没有问题.我正在定义basic-header并将GET发送到url,我得到了答案(json中的数据).

现在我正在使用C#中的Windows应用商店应用程序来使用该服务.我在清单中启用了所有必需的功能,并编写了以下方法:

private async void HttpRequest()
        {
            string basic = "Basic ...........";

            Uri testuri = new Uri(@"https://...Servlet");

            HttpClient client = new HttpClient();

            client.DefaultRequestHeaders.Add("Authorization", basic);

            Task<HttpResponseMessage> response = client.GetAsync(testuri);
            var text = await response;
            var message = text.RequestMessage;
        }
Run Code Online (Sandbox Code Playgroud)

我尝试了许多不同的可能性,例如获取响应字符串但是所有内容都会导致服务器发出401状态代码答案.

我查看了许多类似的问题,我对通信的理解如下:客户端请求 - >服务器响应401 - >客户端发送授权标头 - >服务器响应200(确定)

我不明白为什么我得到401"未授权"状态代码,虽然我在开始时发送授权标题.如果有人知道如何在RESTClient中处理它,那将会很有趣.

BASIC标题是完全正确的我将它与RESTClient中的标题进行比较.

如果有人可以帮助我,这将是很好的.

在此先感谢您的亲切问候,Max

c# basic-authentication http-status-code-401 dotnet-httpclient

0
推荐指数
1
解决办法
2733
查看次数

在 Javascript 客户端中隐藏基本身份验证凭据

我需要从我的客户端 javascript 代码制作一个 ajax 请求,使用 jQuery 将一些数据发布到后端。

$.ajax({...});
Run Code Online (Sandbox Code Playgroud)

Javascript 代码可以被各种客户端嵌入,所以我CORS在我的后端启用并且请求正常。后端受 an 保护,Basic Auth并且 auth 标头存储在 javascript 客户端中。

我如何保护我的后端,以便只有我的客户可以发布数据并防止任何其他人这样做。

javascript security api client basic-authentication

0
推荐指数
1
解决办法
2737
查看次数

将enforce-valid-basic-auth-credentials 添加到config.xml 时出错

我尝试添加

\n\n
  <enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>\n
Run Code Online (Sandbox Code Playgroud)\n\n

在 weblogic 服务器 12.1.3 的 config.xml 中的标签内<security-configuration>添加此行后,每当我启动服务器时,我的 weblogic 服务器都会关闭。

\n\n

有什么不对?我已在下面附上我的 config.xml 内容

\n\n
            <domain-version>12.1.3.0.0</domain-version>\n              <security-configuration>\n                <name>mdm_domain</name>\n                <realm>\n                  <sec:authentication-provider xsi:type="wls:default-authenticatorType">\n                    <sec:name>DefaultAuthenticator</sec:name>\n                  </sec:authentication-provider>\n                  <sec:authentication-provider xsi:type="wls:default-identity-asserterType">\n                    <sec:name>DefaultIdentityAsserter</sec:name>\n                    <sec:active-type>AuthenticatedUser</sec:active-type>\n                  </sec:authentication-provider>\n                  <sec:role-mapper xmlns:xac="http://xmlns.oracle.com/weblogic/security/xacml" xsi:type="xac:xacml-role-mapperType">\n                    <sec:name>XACMLRoleMapper</sec:name>\n                  </sec:role-mapper>\n                  <sec:authorizer xmlns:xac="http://xmlns.oracle.com/weblogic/security/xacml" xsi:type="xac:xacml-authorizerType">\n                    <sec:name>XACMLAuthorizer</sec:name>\n                  </sec:authorizer>\n                  <sec:adjudicator xsi:type="wls:default-adjudicatorType">\n                    <sec:name>DefaultAdjudicator</sec:name>\n                  </sec:adjudicator>\n                  <sec:credential-mapper xsi:type="wls:default-credential-mapperType">\n                    <sec:name>DefaultCredentialMapper</sec:name>\n                  </sec:credential-mapper>\n                  <sec:cert-path-provider xsi:type="wls:web-logic-cert-path-providerType">\n                    <sec:name>WebLogicCertPathProvider</sec:name>\n                  </sec:cert-path-provider>\n                  <sec:cert-path-builder>WebLogicCertPathProvider</sec:cert-path-builder>\n                  <sec:name>myrealm</sec:name>\n                  <sec:password-validator xmlns:pas="http://xmlns.oracle.com/weblogic/security/providers/passwordvalidator" xsi:type="pas:system-password-validatorType">\n                    <sec:name>SystemPasswordValidator</sec:name>\n                    <pas:min-password-length>8</pas:min-password-length>\n                    <pas:min-numeric-or-special-characters>1</pas:min-numeric-or-special-characters>\n                  </sec:password-validator>\n                </realm>\n                <default-realm>myrealm</default-realm>\n                <credential-encrypted>{AES}lWxYlHpEqfbODbLmeerJr6H86R6+lvszW466UpoYzuyh6X617HokRf/oKl3cZJM+JTXliBWwXFhAiC9G3JrbxYNBkXMUGqFSOicuMVJVD0tTCuTr6sfY7UPK9M40Vi4n</credential-encrypted>\n                <node-manager-username>weblogic</node-manager-username>\n                <node-manager-password-encrypted>{AES}loTlWUtqsyw7sq4ujEhLVDaHCv/s7k22k0KSacFO/Ww=</node-manager-password-encrypted>\n                <enforce-valid-basic-auth-credentials>false</enforce-valid-basic-auth-credentials>\xc2\xa0\n              </security-configuration>\n
Run Code Online (Sandbox Code Playgroud)\n

basic-authentication weblogic12c

0
推荐指数
1
解决办法
6036
查看次数

KongIngress 对象中的 strip_path 和 preserve_host 属性。他们在做什么?

我有一个KongIngress关于 Ingress 资源的对象配置属性,它调用 kong 作为 Ingress 控制器。我实际上有这个配置:

apiVersion: configuration.konghq.com/v1
kind: KongIngress
metadata:
  name: echo-site-ingress
  namespace: hello-world
  annotations:
    kubernetes.io/ingress.class: "kong"
proxy:
  protocols:
    - http
    - https
#  path: /
route:
  methods:
    - POST
    - GET
  strip_path: true
  preserve_host: true
---
#My Ingress resource
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    cert-manager.io/cluster-issuer: letsencrypt-prod
    kubernetes.io/ingress.class: kong
    plugins.konghq.com: helloworld-customer-acceptance-basic-auth, hello-world-customer-acceptance-acl
  name: echo-site-ingress
  namespace: hello-world
spec:
  rules:
  - host: hello-world.bgarcial.me
    http:
      paths:
      - backend:
          serviceName: echo
          servicePort: 80
        path: /
  tls: 
  - hosts:
    - …
Run Code Online (Sandbox Code Playgroud)

basic-authentication kong kubernetes-ingress kong-plugin kong-ingress

0
推荐指数
1
解决办法
3007
查看次数

Spring Security 基本身份验证密码轮换问题

专家,,

我有一个 Spring Boot 2.5.5 应用程序(嵌入式 tomcat),我必须在其中配置基本身份验证。

这是我的课程,可以为我完成工作

@Component
@EnableWebSecurity
public class ApplicationSecurityConfig extends WebSecurityConfigurerAdapter {


    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
                .anyRequest()
                .authenticated()
                .and()
                .httpBasic();
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是我只需要在浏览器中输入用户/密码一次,它就适用于任何后续请求。此外,在服务器重新启动后我不需要提供新的用户名/密码,这让我抓狂 - 应用程序仍然有效,我可以访问我的 API/页面。

即使我假设浏览器以某种方式保存用户名和密码,一旦服务器因密码更改而重新启动,它就不应该工作 - 不是吗?

更新二:

按照M. Deinum的建议,我将会话设置为无状态,并且成功了。然后,我继续使用 InMemoryUserDetailsManager 实现基本身份验证,并添加以下代码,我们再次回到同一问题。凭据似乎再次存储在会话中,我不需要为后续请求传递它们。

@Autowired
    public ApplicationSecurityConfig(PasswordEncoder passwordEncoder) {
        this.passwordEncoder = passwordEncoder;
    }

    @Override
    @Bean
    protected UserDetailsService userDetailsService() {
        UserDetails user = User
                .builder()
                .username("admin")
                .password(passwordEncoder.encode("admin"))
                .roles("ADMINISTRATOR")

                .build();
        return new InMemoryUserDetailsManager(user);
    }
Run Code Online (Sandbox Code Playgroud)

spring spring-security basic-authentication spring-boot

0
推荐指数
1
解决办法
561
查看次数