rest - 从客户端到 REST 后端的 Angular 2 X509 身份验证

标签 rest angular authentication certificate x509

我有一个 REST 后端,可以使用客户端证书基于 X509 身份验证。

现在我有一个用 Angular 2 编写的前端,它也应该使用 X509 身份验证并将其进一步提供给 REST 后端。

我不明白的是如何将客户端证书从 Angular 2 前端转发到 REST 后端以进行身份​​验证。是否有可能或者我应该使用一个安全域作为前端和客户端之间的 X509 身份验证,以及第二个安全域作为前端和后端之间的 X509 身份验证?

最佳答案

如果您使用 Apache2 httpd 服务器来托管您的 Angular2 应用程序,您可以在您的系统上安装 mod_ssl,具体取决于操作系统。

安装 mod_ssl 后,会创建一个新的配置文件。在我的例子中,它位于:/etc/httpd/conf.d/ssl.conf。放置以下配置,当然可以针对您的用例进行调整。

您需要拥有 CA 证书、由该 CA 签名的服务器证书以及服务器私钥。

<VirtualHost *:443>
         SSLEngine On
         SSLCertificateFile /var/www/html/certs/localhost.crt
         SSLCertificateKeyFile /var/www/html/certs/key.pem
         SSLCACertificateFile /var/www/html/certs/ca.crt
         SSLVerifyClient require
         SSLVerifyDepth 2
         SSLOptions +ExportCertData
         ServerAdmin info@example.com
         ServerName localhost
         DocumentRoot /var/www/html
         ErrorLog /var/www/logs/error.log
         CustomLog /var/www/logs/access.log combined
         ProxyPass /services ajp://localhost:8009/services
         ProxyPassReverse /services ajp://localhost:8009/services
         SSLOptions +ExportCertData
         DocumentRoot /var/www/html
            <Directory /var/www>
                    Options -Indexes
                    Order allow,deny
                    Allow from all
    </Directory>

</VirtualHost>

重新启动 apache2 后,它现在会提示用户输入证书,并通过 SSLOptions +ExportCertData 将该证书转发到后端

关于rest - 从客户端到 REST 后端的 Angular 2 X509 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41683448/

相关文章:

java - Spring 数据休息,url 参数中的 java.util.Date?

angular - 如何使用 Spring boot 和 Angular 应用程序隐藏授权 header

c# - ASP.NET CORE 2.1 的 Cookie 身份验证问题。 AWS负载均衡

java - GoogleAuthUtil.getToken 导致 Android 应用程序崩溃

c# - AzureDevOps 上的 TF.exe 和 TfSecurity.exe 身份验证

java - 使用 Java Rally Rest API 提取 Rally 缺陷讨论

java - 我如何在Spring Boot中使用Mailgun接收电子邮件

php - 使用 RESTful 服务保护来自跨域的 API 调用

angular - "this"不能用于 typescript 函数 (Angular)

javascript - Twitter 时间线嵌入不会在 Angular 中重新加载