nodes / nemid
Nemid for php包
Requires
- guzzlehttp/guzzle: ~6.0
This package is auto-updated.
Last update: 2024-05-17 19:36:05 UTC
README
一个PHP Laravel库,用于使用丹麦NemID进行用户身份验证。
我相信它也可以在没有laravel的情况下轻松使用。欢迎为改进贡献力量
该库支持
- 准备小程序的参数
- 验证返回的签名和证书链
- 提取姓名和PID
- 将PID与CPR SOAP Web服务匹配
这是为旧版小程序在Java中的原始库的重写
原始库可以在以下位置找到:https://code.google.com/p/nemid-php/
要成为Nemid合作伙伴,请按照此链接操作
然后,您必须修改您的composer.json
文件并运行composer update
,以将包的最新版本包含到您的项目中。
"require": { "nodes/nemid": "^1.0" }
或者,您可以从终端运行composer require命令。
composer require nodes/nemid:^1.0
🔧 Laravel设置
在config/app.php
中设置服务提供者
Nodes\Nemid\ServiceProvider::class
发布配置文件
php artisan vendor:publish --provider="Nodes\NemId\ServiceProvider"
如果您想覆盖任何现有的配置文件,请使用--force
参数
php artisan vendor:publish --provider="Nodes\NemId\ServiceProvider" --force
证书
确保您已安装bcmath
sudo apt-get install php7.0-bcmath
如果您的p12文件受密码保护,且密码包含特殊字符,请参阅此Stack Overflow帖子
您已获得p12证书,现在生成pem文件,使用以下命令
publicCertificate
openssl pkcs12 -in path.p12 -out certificate.pem -clcerts -nokeys
注意:如果存在,请删除以Bag Attributes
开头的初始行。
只有-----BEGIN CERTIFICATE-----
、base64编码的证书和-----END CERTIFICATE-----
是相关的。
privateKey & privateKeyPassword
openssl pkcs12 -in path.p12 -clcerts -out privateKey.pem
OpenSSL会提示您输入PEM pass phrase
,该pass phrase需要在您的nemid.php
配置中设置。
certifateAndPrivateKey & password (For PID/CPR match)
openssl pkcs12 -in path.p12 -out certificateAndPrivateKey.pem -chain
使用-nodes
标志禁用证书的加密和密码保护(这与Nodes无关)。
如果省略,OpenSSL会提示您输入PEM pass phrase
,该pass phrase需要在您的nemid.php
配置中设置。
现在您已拥有所需的所有证书-
将配置文件复制到htdocs并填写设置
在配置文件中查找更多帮助
# 登录集成 在灵感文件夹中可以找到如何设置登录流程的示例。
首先准备要注入iframe的参数。通过创建一个Login对象。
$login = new Login(config('nodes.nemid'));
设置一个包含iframe url、js参数数据和表单的回调的html文档
$login->getIFrameUrl();
$login->getParams();
iframe现在将响应提交到表单
提交的数据是base64编码的,除了错误外,所有错误都作为字符串出现,而成功的登录是XML文档
$response = base64_decode(\Input::get('response'));
CertificationCheck::isXml($response)
现在通过初始化一个CertificationCheck对象来验证证书并从中提取名称和PID
$userCertificate = new CertificationCheck(config('nodes.nemid'));
$certificate = $userCertificate->checkAndReturnCertificate($response);
$certificate->getSubject()->getName();
$certificate->getSubject()->getPid();
PID/CPR匹配集成
初始化PidCprMatch对象,并使用pid和cpr参数调用函数。
$pidCprMatch = new PidCprMatch(config('nodes.nemid'));
$response = $pidCprMatch->pidCprRequest($pid, $cpr);
将返回一个响应对象。该对象具有检查匹配和可能错误的函数
$response->didMatch();
杂项
- 对于未设置名称的nemid用户版本1,将使用名称
Pseudonym
或Pseudonym Pseudonym
享受