我试图用Laravel(php(实现一个数字签名来登录网络,但我找不到好的信息。
我想我应该使用x509 SSL,但我什么都找不到。我刚刚发现:
https://github.com/ingria/laravel-x509-auth/wiki/Using-other-cert-attributes
https://github.com/ndavison/laravel-clientcert/blob/master/ClientCertAuthMiddleware.php#L33
但我不确定。如果有任何帮助,我将不胜感激。
简单答案:
您需要配置web服务器,以便在客户端连接以获取客户端证书时对其进行质询。这通常是通过指定您接受证书的客户端证书颁发机构来完成的。
我以前在Laravel 5.x中为客户端tls-auth与LDAP结合编写过auth控制器,特别是使用windows active directory证书服务用户证书。例如,在对外部目录信息进行身份验证以确定基于组的权限后,仍然需要这些信息。
一旦web服务器挑战并接受客户端证书,您的应用程序就需要进行一系列验证,包括您将使用什么属性来唯一标识用户?LDAP可分辨名称?用户主体名称?非windows证书属性?
使用像openssl-in client.cer-nout-text这样的X509证书转储程序来查看所有属性,并决定需要检查什么并映射到Laravel中的用户帐户。
话虽如此,大多数人并不只是依赖用户证书(尽管这对于无需交互和非常安全的身份验证来说非常方便(,他们通过SAML或OAUTH等方式利用外部身份提供商。
在我的情况下,我在工作中使用Azure active directory,并在公司AAD中注册我的应用程序,然后使用方便的laravel服务提供商,如https://github.com/metaclassing/PHP7-Laravel5-EnterpriseAuth这是基于拉拉威尔社交名媛为azure广告和一些添加了cert-auth-good。