1

我們正在使用Ionic構建跨平臺應用程序,並使用Azure上託管的ASP.NET Core WebAPI。 我們正在使用身份驗證系統,但我們需要將對此API的訪問權限限制在我們的應用程序中。所以如果其他應用程序或網站嘗試訪問API,它們將被阻止。請注意:將Web API限制爲應用程序

  • web應用程序是SSL保護
  • 我已被告知,發送共享代碼 是沒有用的,因爲它可以從二進制

採取請給我你的建議,解決這個問題。

+0

IP白名單將是你最快的解決辦法,但如果這是一個外部系統不是傻瓜證明。我們在局域網的一些API服務器上使用IP白名單作爲輔助安全措施。 –

+0

使用客戶端憑證流程。或者,如果您有個性化賬戶(每個人一個)使用其中一個OpenID流(即authCode)。超出範圍進一步細化 – Tseng

+0

我們使用Basic HTTP Authentication實現AuthorizationFilterAttribute。當電話首次進入時,這將被打。 – lcryder

回答

0

按照要求,這是一個授權過濾器的外殼。 我們發送一個序列化和加密的JSON對象。

公共類XxxxxxFilter 繼承AuthorizationFilterAttribute

Public Overrides Sub OnAuthorization(actionContext As System.Web.Http.Controllers.HttpActionContext) 

    Dim authHeader As System.Net.Http.Headers.AuthenticationHeaderValue = actionContext.Request.Headers.Authorization 

    If authHeader IsNot Nothing Then 

     '... then check that its set to basic auth with an actual parameter .... 
     If String.Compare("basic", authHeader.Scheme, True) = 0 AndAlso String.IsNullOrWhiteSpace(authHeader.Parameter) = False Then 

      Dim cred As String = Encoding.GetEncoding("iso-8859-1").GetString(Convert.FromBase64String(authHeader.Parameter)) 

      ' validate the cred value however needed 
      ' you want to exit at this point if all is ok 

     End If 

    End If 

    ' ... if we get this far then authentication has failed 
    actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized) 

End Sub 

末級

相關問題