繁体   English   中英

安全地将C#REST API暴露给Python等脚本语言

[英]Securely Exposing C# REST API to scripting language such as Python

我的C#REST API是从AngularJS Web应用程序调用的。 我通过验证用户并确保用户是特定Windows组的一部分来保护Web API。

现在,客户希望从脚本(Python)调用API。 我该如何实现? 我应该让他们通过用户名和密码作为json调用的一部分吗?

如果你可以轻松地在Python中扩充标题,我建议你使用令牌认证。 Microsoft不直接提供此类auth,而是通过OWIN项目提供。 这并不难,但你需要先了解它的工作原理。 有一个很好的和全面的教程在这里

基本上,您通过提供用户名/密码来获取令牌(在一段时间内有效)。 此令牌已加密/签名,这意味着您的后端将信任,无需在每个请求上验证用户名/密码(这是昂贵的)。 然后,您需要将此标记添加到标头Authorization bearer token或类似的每个请求。 或者,我认为如果您愿意,可以在cookie中使用令牌以保持向后一致性。

我建议您在Angular中使用相同的机制,因为您可以轻松地在那里添加拦截器并避免使用cookie和CSRF潜在的麻烦。

使用与您当前使用的完全相同的身份验证方法。

这是使用python(未经测试)的基本示例:

from requests.auth import HTTPBasicAuth
s = requests.Session()

# Make the initial authentication request from a session object
s.get('https://omg.wtf/user', auth=HTTPBasicAuth('user', 'pass'))

# All subsequent requests from that session will include any cookies set in the initial response
r = s.get('http://omg.wtf/911')
print(r.text)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM