使用Javascript插件作为客户端的Web API身份验证和授权

时间:2013-01-16 19:14:20

标签: javascript asp.net-mvc rest authentication asp.net-web-api

我正在编写Web Api(使用asp.net Web Api),并且自然希望客户端进行身份验证以使用该服务。

我希望编写一个Javascript插件,该插件可以使用Api,然后可以将其放到其他网站中。

我可以通过安全的方式对插件进行身份验证吗? 我不确定如何将传递给插件的任何信息保密。

我还希望本机应用程序可以使用API​​,这样可以规定任何使用Cookie的内容吗?

由于

1 个答案:

答案 0 :(得分:3)

  

我可以通过安全的方式对插件进行身份验证吗?

您必须在插件中嵌入用户名/密码,或者使用一些字段从用户那里获取该信息。

如果您选择嵌入用户名/密码,请考虑一些代码:

$.ajax({
        url: 'api/foo',
        type: 'GET',
        dataType: 'json',
        success: onSuccess,
        error: onError,
        beforeSend: setHeader
    });

请注意将beforeSend分配给setHeader

function setHeader(xhr) {    
    xhr.setRequestHeader('Authorization', 'Basic YXBpX3VzZXIxOjEyMzQxMjM0');

}

注意,您必须使用以下方法预先计算身份验证字符串

现在,如果您想从用户那里提取用户名/密码,您可以这样做:

function setHeader(xhr) {            
        xhr.setRequestHeader('Authorization', make_base_auth($("#username").val(), $("#password").val()));
}

function make_base_auth(user, password) {
    var tok = user + ':' + password;
    var hash = Base64.encode(tok);
    return "Basic " + hash;
}