相关疑难解决方法(0)

身份验证与授权

Web应用程序的上下文有什么不同?我看到很多缩写"auth".它是代表身份验证还是身份验证?还是两者兼而有之?

security authentication authorization

589
推荐指数
7
解决办法
22万
查看次数

如何使用BASIC身份验证从Web站点注销用户?

如果用户使用基本身份验证,是否可以从网站注销用户?

杀戮会话是不够的,因为一旦用户通过身份验证,每个请求都包含登录信息,因此用户下次使用相同的凭据访问站点时会自动登录.

到目前为止,唯一的解决方案是关闭浏览器,但从可用性的角度来看,这是不可接受的.

authentication http basic-authentication

259
推荐指数
12
解决办法
19万
查看次数

http基本身份验证"注销"

存储HTTP基本身份验证凭据直到浏览器关闭,但有没有办法在浏览器关闭之前删除凭据?

我读了一个关于HTTP 401状态代码技巧,但似乎工作不正常(请参阅评论回答).也许trac使用机制就是解决方案.

可以使用JavaScript删除凭据吗?或者结合使用JavaScript和状态401技巧?

javascript http basic-authentication logout

60
推荐指数
3
解决办法
5万
查看次数

使用.htaccess(和.htpasswd)身份验证时如何注销?

可能重复:
通过PHP进行HTTP身份验证注销

你好

我在我的网站上使用.htaccess和保护了一些功能.htpasswd.当用户尝试访问它时,他们会立即输入详细信息.他们输入他们的细节并进入,可以看到东西等.一切正常.

我的问题是如何logout为这种类型的身份验证创建功能.我知道他们可以关闭浏览器窗口以"注销".但这并不理想.你有什么建议给我的?

谢谢.

php authentication .htaccess logout .htpasswd

28
推荐指数
2
解决办法
6万
查看次数

Java EE的RESTful身份验证

我花了一些时间来评估可用于在Java EE应用程序中重新验证用户身份的选项.

因此,请建议以下列出的选项是否有效以及有关优缺点的陈述.可能是我遗漏了可能使身份验证方法可行的细节.或者可能是我错过了另一个选项(我们再次严格地讨论java EE,因此没有查询身份验证,除非可以以符合EE的方式完成,否则不会这样做)

1. DIGEST/BASIC认证

 <security-constraint>
     <web-resource-collection>
        <web-resource-name>admin</web-resource-name>
        <url-pattern>/protected/*</url-pattern>
     </web-resource-collection>
     <auth-constraint>
        <role-name>admin</role-name>
     </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>DIGEST/BASIC</auth-method>
    <realm-name>as-defined-secuity-realm</realm-name>
</login-config>
Run Code Online (Sandbox Code Playgroud)

好处

  1. 这是一种REST友好的身份验证方式.您可以通过AJAX调用发送授权凭据.一旦用户通过身份验证,浏览器将伴随任何具有正确Authorization: Basic/Digest QWxhZGRpbjpvcGVuIHNlc2FtZQ==标头的请求.如果凭据不良,将向用户显示丑陋的浏览器登录屏幕 - 如果您可以使用它,那么BASIC/DIGEST auth就是您的选择.

  2. 在Digest的情况下,传递给服务器的字符串是MD5加密的字符串,它比Basic更安全(它是'user:password'字符串的Base64编码),但仍然可以解密.因此,在安全性方面,BASIC与FORM身份验证一样安全,而DIGEST是最安全的.总之,如果您的站点完全是HTTPS(我的意思是完全是因为如果某些资源是通过HTTP获取的,例如您的授权标题将对第三方可见)您可以安全地使用BASIC/DIGEST.

  3. 易于设置.

缺点

  1. 注销是很棘手的.看到这里这里.确保你有一个很好的AJAX请求来验证用户,但你还需要一个?AJAX?注销用户的请求 - 触发浏览器登录窗口再次出现).BTW好的servlet 3.0 request.logout()方法在这种情况下无法正常工作.
  2. 会话超时很难实现.会话到期确实发生(它是servlet容器的工作),但浏览器将在下一个请求上发送授权头,从而触发重新身份验证.
  3. 没有个性化登录页面.没有.
  4. 很难跟踪经过身份验证的会话.

2.基于FORM的身份验证

 <security-constraint>
     <web-resource-collection>
        <web-resource-name>admin</web-resource-name>
        <url-pattern>/protected/*</url-pattern>
     </web-resource-collection>
     <auth-constraint>
        <role-name>admin</role-name>
     </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>FORM</auth-method>
    <realm-name>as-defined-security-realm</realm-name>
    <form-login-config>
        <form-login-page>/auth/login.html</form-login-page>
        <form-error-page>/auth/error.html</form-error-page>
    </form-login-config>
</login-config>
Run Code Online (Sandbox Code Playgroud)

简而言之,如果用户访问protected/*URL,则登录页面将包含在响应中.因此,用户期望他将获得在form-login-page标签中配置的登录页面而不是内容.如果密码正常,他将被转发(302 Paged Moved …

authentication ajax rest servlets java-ee

19
推荐指数
1
解决办法
4685
查看次数

如何注销可在Google Chrome中运行的HTTP身份验证(htaccess)?

我有一个Firefox和IE的解决方案,但我没有找到任何谷歌Chrome的解决方案.

有没有办法在谷歌浏览器中做到这一点?

.htaccess google-chrome http-authentication

7
推荐指数
2
解决办法
1万
查看次数

从Symfony2中的http_basic身份验证注销

每当我去/admin/logout,我都被正确地重定向到我的项目的根目录,但是当我访问时仍然登录,/admin/因为我没有被提示输入凭据.

这是我的配置:

security.yml

security:
    firewalls:
        admin_area:
            pattern:    ^/admin
            http_basic: ~
            stateless:  true
            switch_user: { role: ROLE_SUPER_ADMIN, parameter: _want_to_be_this_user }
            logout: { path: /admin/logout, target: / }
Run Code Online (Sandbox Code Playgroud)

AdminBundle /资源/配置/ routing.yml中

logout:
    pattern:   /logout
Run Code Online (Sandbox Code Playgroud)

应用程序/配置/ routing.yml中

admin:
    resource: "@AdminBundle/Resources/config/routing.yml"
    prefix:   /admin
Run Code Online (Sandbox Code Playgroud)

由于标头状态,授权仍然存在,Authorization:Basic YWRtaW46cEAkJHcwUmQh因此我想在请求期间仍然会向应用程序提供凭据.

我知道有从注销没有适当的方式HTTP Basic Auth这个问题,但也许Symfony2的允许了吗?

php security basic-authentication logout symfony

7
推荐指数
1
解决办法
5609
查看次数

PHP Digest auth,注销

有没有办法注销在php中完成的摘要认证.

我试过unset($ _ SERVER ["PHP_AUTH_DIGEST"]); 但它不会要求重新登录.我知道如果我关闭浏览器然后它将工作,这是我的功能.

    function login(){
        $realm = "Restricted area";
        $users = array("jamesm"=>"");
        if (empty($_SERVER["PHP_AUTH_DIGEST"])) {
            header("HTTP/1.1 401 Unauthorized");
            header("WWW-Authenticate: Digest realm=\"{$realm}\",qop=\"auth\",nonce=\"".uniqid()."\",opaque=\"".md5($realm)."\"");
            return false;
        }
        if (!($data = http_digest_parse($_SERVER["PHP_AUTH_DIGEST"])) || !isset($users[$data["username"]]))
            return false;
        $A1 = md5($data["username"] . ":{$realm}:{$users[$data["username"]]}");
        $A2 = md5($_SERVER["REQUEST_METHOD"].":{$data["uri"]}");
        $valid_response = md5("{$A1}:{$data["nonce"]}:{$data["nc"]}:{$data["cnonce"]}:{$data["qop"]}:{$A2}");
        if ($data["response"] != $valid_response)
            return false;
        return true;
    }
    function logout(){
        unset($_SERVER["PHP_AUTH_DIGEST"]);
        return true;
    }
Run Code Online (Sandbox Code Playgroud)

我还需要添加到注销功能以完成此操作.

如果我改变了它的作用,但我不希望它被改变.

php security logout digest-authentication http-status-code-401

6
推荐指数
2
解决办法
1万
查看次数

登录页面与htpasswd - 哪个更安全?

给定一个简单的登录系统(注册和登录),这两个选择中的哪一个更安全:

  • 使用htaccess和htpasswd文件来存储和验证用户
  • 使用PHP到CRUD和MySQL(或任何其他数据库)来存储信息

用户信息完全由用户名密码组成.

当然,两种选择都假设最佳情况:考虑MySQL注入,密码为md5/sha1/md5 + sha1 /任何其他加密方式等.

如果你想知道,在第一种情况下,php会将用户凭据添加到htpasswd文件中.(有关示例实现,请参阅问题.)

php .htaccess .htpasswd

6
推荐指数
2
解决办法
4847
查看次数

销毁$ _SERVER会话?

好的,所以我没有使用任何会话变量,而是我的代码如下所示:

if (!isset($_SERVER['PHP_AUTH_USER'])) {
    header('WWW-Authenticate: Basic realm="Enter your Twitter username and password:"');
    header('HTTP/1.0 401 Unauthorized');
    echo 'Please enter your Twitter username and password to view your followers.';
    exit();
}

$username = $_SERVER['PHP_AUTH_USER'];
$password = $_SERVER['PHP_AUTH_PW']; 
Run Code Online (Sandbox Code Playgroud)

所以,我的问题是,当用户想要退出他们的(在这种情况下)twitter登录凭证时,我怎么能破坏这个登录会话?

php twitter http http-authentication http-headers

4
推荐指数
1
解决办法
1872
查看次数

如何注销用户以进行基本 HTTP 身份验证

是否有解决方案可以注销用户(让浏览器清除其缓存的凭据并要求用户再次登录凭据)以进行基本的 HTTP 身份验证?

我已经浏览了以下问题:

browser authentication basic-authentication

2
推荐指数
1
解决办法
1万
查看次数