如何保护.net核心API项目

时间:2017-06-30 19:42:01

标签: angular authentication asp.net-core oauth-2.0 ssl-certificate

我有一个用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?有什么例子吗?

唯一需要访问的人是我们公司内部的人,但是在可能没有连接到我们内部网络的设备上,例如移动电话或笔记本电脑。

1 个答案:

答案 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,但您也可以使用角色等声明进行扩展。