我正在尝试使用Windows集成安全性(NTLM)来实现JWT身份验证服务器。
我计划以OpenID Connect资源所有者的密码凭证授予(又名密码授予)为基础,并查看我是否可以使其适应于集成安全性。基本上,我想从iis(使用ntlm)获取用户,而不是从POST的主体参数中读取用户。
这是我从FusionAuth docs获得的样本:
POST /oauth2/token HTTP/1.1
Host: piedpiper.fusionauth.io
Content-Type: application/x-www-form-urlencoded
Accept: */*
Content-Length: 436
client_id=3c219e58-ed0e-4b18-ad48-f4f92793ae32&
grant_type=password&
username=richard%40piedpiper.com&
password=disrupt&
scopes=offline_access
应该返回类似
的内容{
"access_token" : "eyJ[...]kZo",
"expires_in" : 3600,
"refresh_token": "Nu0[...]xuw",
"token_type" : "Bearer",
"userId" : "3b6d2f70-4821-4694-ac89-60333c9c4165"
}
我正计划在iisnode后面运行的node.js实施类似的事情,并使用升级后的变量(请点击this链接)来获取当前的Windows用户
我在想这样的事情:
POST /oauth2/ntlm/token HTTP/1.1
Host: authserver.myproject.io
Content-Type: application/x-www-form-urlencoded
Accept: */*
Content-Length: 436
client_id=3c219e58-ed0e-4b18-ad48-f4f92793ae32&
grant_type=ntlm&
scopes=offline_access
我只是传递客户ID,所需的作用域和值ntlm
的自定义授予类型。我的节点项目将在/ oauth2 / ntlm / token上侦听,我将获得当前登录的用户检查标题AUTH-USER
,并使用该信息创建JWT。
我找不到有关将NTLM与JWT集成的太多信息。我想知道这是否是正确的方法,或者是否有更好/更标准的方法来做到这一点。