2016-04-23 17 views
1

我正在學習Azure應用程序服務中Azure移動應用程序可能性的過程,並且有幾個有關身份驗證(和授權)的問題。我使用Azure移動應用程序Quickstart來了解可用的功能。向Azure移動應用程序中已通過身份驗證的用戶添加其他聲明

第一個問題:使用自定義驗證您的應用程序: 我是否正確,我不能用作爲一節所述的Microsoft.Azure.Mobile.Server.Login包實現自定義的身份驗證「怎麼理解呢「的文章Work with the .NET backend server SDK for Azure Mobile Apps,因爲我想使用內置的Azure身份驗證提供程序(用於與Facebook,Google等進行身份驗證)? 我比較喜歡的配置,並使用了定製開發的內置功能,當談到安全;-)

第二個問題: 目前我想添加一些自定義的權利要求(例如,從Azure中讀取角色的要求基於用戶SID的SQL數據庫)發送給在Azure移動應用程序中成功註冊和驗證的用戶。 完成該任務的最佳方法是什麼? 我的想法是像下面那樣在TableController的Initialize方法中添加聲明,然後使用[Authorize(Roles =「Test」)]屬性檢查角色。 有沒有任何理由不這樣做?

protected override void Initialize(HttpControllerContext controllerContext) 
    { 
     base.Initialize(controllerContext); 
     myapptestContext context = new myapptestContext(); 
     DomainManager = new EntityDomainManager<TodoItem>(context, Request); 

     var claimsPrincipal = this.User as ClaimsPrincipal; 
     ClaimsIdentity ci = new ClaimsIdentity(); 
     string role = "Test"; // get role from Azure SQL database based on user's SID 
     ci.AddClaim(new Claim(ClaimTypes.Role, role)); 
     claimsPrincipal.AddIdentity(ci); 
    } 

回答

3

如果您打算使用內置身份驗證提供程序,則不需要使用Microsoft.Azure.Mobile.Server.Login。內置的提供商(AAD,Facebook,Google,Twitter,MSA)將爲您處理所有細節。

至於定製的要求,我沒有任何具體的指導。你可以把它放在控制器初始化中,或者你可以添加一個自定義中間件來注入它,甚至可以在Global.asax中調用一個回調函數。無論哪種方式最適合您和您的應用。

+0

謝謝您花時間回覆!我確信我在這裏錯過了一些東西,但我沒有看到「添加一個定製中間件」來添加聲明的方法。你的意思是將自定義身份驗證過濾器添加到HttpConfiguration對象,該對象在用戶通過內置提供程序進行身份驗證後運行,並在那裏添加從數據庫中獲取的聲明?我看到的另一個選項是檢查用戶在自定義AuthorizationAttribute中的角色,而不是添加角色聲明。這也是一種有效的方法嗎? – Tobias

+1

我認爲這也應該工作。 HttpConfiguration是正確的開始。 –

相關問題