簡體   English   中英

沒有身份的令牌授權

[英]Token authorization without identity

我正計划將以下代碼用於Web api安全性,但是我不確定這是否足夠安全且合乎邏輯。 我不想使用OWIN和AspNet.Identity,因為它對我來說非常復雜,我也不完全了解,也不知道如何自定義數據庫表,用戶角色等。我。

這是CustomAuthorizeAttribute;

public class CustomAuthorize : AuthorizeAttribute
{
    public override void OnAuthorization(HttpActionContext actionContext)
    {
        if ((actionContext.Request.Headers.GetValues("Host").FirstOrDefault().Contains("localhost:15742")))
        {
            IEnumerable<string> access_token;
            if (actionContext.Request.Headers.TryGetValues("Authorization", out access_token))
            {
                var user = GetUserByToken(access_token);
                if (user!=null && !user.TokenIsExpired)
                {
                    HttpContext.Current.Response.AddHeader("WWW-Authenticate", "Custom " + access_token.FirstOrDefault());
                    return;
                }
                else
                {
                    actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
                    HttpContext.Current.Response.AddHeader("WWW-Authenticate", "Custom");
                    return;
                }
            }
            else
            {
                actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized);
            }
        }
        else
        {
            actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Forbidden);
        }
    }
}

這是前端使用

<script type="text/javascript">
    $(function () {
        var access_token = $.cookie('access_token');
        if (access_token == undefined) {
            $.cookie('access_token', 'test-token');
        }


        $.ajax({
            url: '/api/account',
            headers: { access_token: access_token },
            success: function (data) {
                document.write(data.name + " " + data.lastname);
            }
        });
    });
</script>

順便說一句,我為我的英語感到抱歉。 希望您理解我的問題,我正在等待您的建議。

我建議您花時間學習做這些事情的正確方法。 使用庫是有原因的,這是為了確保您不會創建容易破解的庫。 安全對於此類事情至關重要。

我碰巧有一篇關於該主題的文章,希望它可以幫助您更多地了解該主題。 無論如何,也要進行自己的研究,找到其他資源,例如使用Claims,但不要嘗試捷徑這些事情,因為最終會帶來一些根本不安全的事情。

希望這會有所幫助: https : //eidand.com/2015/03/28/authorization-system-with-owin-web-api-json-web-tokens/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM