我有一个用Angular 4编写的web ui应用程序,它运行在IIS后面,需要SSL并且一对一的客户端证书映射。
此SSL web ui应用程序调用.net核心API项目,该项目还使用SignalR将其数据推送到ui应用程序。
这些会在同一个域名下运行两个不同的网址。
https://ui.mysite.com
https://api.mysite.com
这两个应用程序都不向公众开放,需要良好的安全性。
我很乐意通过个人证书锁定ui网站。 SSL证书通过受信任的证书颁发机构,然后为客户端身份验证创建自签名证书。
您建议将api站点锁定到外部世界,以便只有ui站点(以及我们网络内部的开发人员用于调试目的,即查看json响应)可以访问?
我见过人们提到oauth2 / jwt?有什么例子吗?
唯一需要访问的人是我们公司内部的人,但是在可能没有连接到我们内部网络的设备上,例如移动电话或笔记本电脑。
答案 0 :(得分:1)
您绝对可以使用JWT来保护Web API。
这是一个很好的起点: https://dev.to/samueleresca/developing-token-authentication-using-aspnet-core
基本上,此实现的工作原理是每个具有 this._service.getPlant().subscribe(plants => {
for (var i = 0; i < plants.length; i++)
for (var name in plants[i]) {
this.plants.push(plants[i][name]);
console.log(plants[i][name]);
}
this._service.getDept().subscribe(depts => {
for (var i = 0; i < depts.length; i++)
for (var name in depts[i]) {
this.depts.push(depts[i][name]);
console.log(depts[i][name])
}
this._service.getMachines().subscribe(machines => {
for (var i = 0; i < machines.length; i++)
for (var MachineName in machines[i]) {
machines.push(machines[i][MachineName]);
// console.log(machines[i][MachineName]) ;
}
});
});
});
属性的控制器或操作都需要通过请求的[Authorize]
标头发送访问令牌。通过使用用户名和密码向Authorization
发送POST请求来获取此访问令牌。每个密钥都有一个设置的到期时间,您可以在代码中进行更改。
这是一个简单的JWT,但您也可以使用角色等声明进行扩展。