我正在尝试实现数字签名以使用Laravel(php)登录Web,但是我找不到很好的信息。
我认为我应该使用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
但是我不确定。我将不胜感激。
答案 0 :(得分:0)
简短答案:
您需要将Web服务器配置为在连接客户端证书时挑战客户端。通常,这是通过指定接受证书的客户证书颁发机构来完成的。
我之前在Laravel 5.x中编写了用于与LDAP结合使用的客户端tls auth的身份验证控制器,特别是使用Windows Active Directory证书服务用户证书。外部目录信息经过身份验证以确定例如基于组的权限后,仍然需要使用。
一旦Web服务器挑战并接受了客户端证书,您的应用程序就需要进行一系列验证,包括您将使用什么属性来唯一标识用户? LDAP专有名称?用户主体名称?非Windows证书属性?
使用类似opensl -in client.cer -noout -text这样的X509证书转储器来查看所有属性,并确定需要检查哪些内容并映射到Laravel中的用户帐户。
总而言之,大多数人不仅仅依靠用户证书(尽管对于不需要交互且非常安全的身份验证非常方便),他们通过SAML或OAUTH等方式利用外部身份提供者。
在我的情况下,我在工作中使用Azure活动目录并在公司AAD中注册我的应用,然后使用方便的laravel服务提供商(例如https://github.com/metaclassing/PHP7-Laravel5-EnterpriseAuth),该提供商基于laravel社交名气用于azure-ad和一些附加证书认证善良。