jquery - 从 jquery 安全地调用我的 Web api

标签 jquery security asp.net-web-api rsa

我有一个简单的问题,但可能会指出一个复杂的答案:(

我有一个运行良好的 Web api。但现在我想设置身份验证/授权。 我需要它在所有平台上工作,但主要来自 jQuery。当然,我不想像这样以纯文本形式沿着管道发送我的用户名和密码:

function GetAllCategories() {
    var credentials = $.base64.encode('r3plica:mypassword');
    var authType = "Basic " + credentials;

    $.ajax({
        url: "http://localhost:18904/api/Categories",
        type: "GET",
        beforeSend: function (xhr) {
            xhr.setRequestHeader("Authorization", authType);
        },
        success: function (data) {
            alert('Success!');
        },
        error: function () {
            alert('error');
        }
    });
}

所以我一直在寻找其他替代方案。 是使用 3 足 OAuth 的唯一替代方案吗?我希望将查询字符串键/值传递给我的 api,并让它处理所有事情,但我只是找不到执行此操作的分步过程。 一切看起来都那么复杂。

那么,有人知道我能做什么吗?我已经阅读了大量内容并尝试实现大量内容。

我设法让它工作:http://codebetter.com/johnvpetersen/2012/04/04/moving-from-action-filters-to-message-handlers/ 据我所知,您需要在使用公钥发送到 api 之前对字符串(用户名)进行加密,然后 api 将使用私钥解密并授权您。

所以我的两个问题很简单:)

  1. 您可以使用上面的链接并轻松地从 jQuery 调用吗(即不使用第 3 方库)
  2. 如果没有,保护我的 API 以便可以直接从 jQuery.ajax 调用进行调用的最佳方法是什么?

澄清一下,我正在为 API 使用 SSL

提前干杯,

/r3plica

最佳答案

对于网站(用户可以查看源代码),我们通过 PHP 生成 AuthenticationToken 并将其放入 JavaScript 中。每次页面重新加载时, token 都会发生变化。

例如:

<script type="text/javascript">var authToken = '<?=genToken();?>'</script>
[...]
$.ajax( [..]
    beforeSend: function (xhr) {
        xhr.setRequestHeader("ownToken", authToken);
    },

并检查 token 服务器端。

关于jquery - 从 jquery 安全地调用我的 Web api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16468220/

相关文章:

jquery-ui - 点击 : Load image in a random order of 10px blocks

javascript - jQuery 日期选择器字段值不显示

jquery - WordPress 页面加载器

java - 这个小程序在 Iced Tea JRE 中工作吗?

c# - 无法将字符串数组传递给 WebApi Actionfilter

javascript - ExtJS GET 操作在 FireFox 中存储返回 500

jquery - 为什么我的整个代码不工作?

php - 保护 php 到数据库的通信

security - 检查引荐来源网址是否足以防范 CSRF 攻击?

c# - WebApi POST 不包含 ID 字段