我想問一個問題以確認我對如何使用範圍和索賠(角色)的理解。比方說,我有一個用戶(具有隻讀權限的用戶A,即適合的只讀角色),Windows服務(具有隻讀訪問權限的客戶端A),MVC站點(具有完全訪問權限的客戶端B)以及Web API。我希望Web API可以被具有完全訪問權限和只讀訪問權限的用戶和客戶端訪問。範圍和索賠(再次!)
- 我創建兩個作用域 「sampleApi.full和 」sampleApi.read_only「
- 我創建兩個角色 」full_access「 和 」READ_ONLY「
- 我配置的Web API與RequiredScopes =新[] {」 sampleApi.full 「 」sampleApi.read_only「}
當客戶端A連接到Web的API,它通過一個含有訪問令牌範圍 」sampleApi.read_only「 我可以使用[ScopeAuthorize(」 sampleApi.full) ]或ScopeAuthorize(「sampleApi.full,sampleApi.read_only」)]在我的類和方法來微調可訪問性。沒問題。
但是,當用戶A登錄時,他/她「繼承」客戶端B的範圍。因此,訪問令牌包含「sampleApi.full」,「sampleApi.read_only」和角色「read_only」。
現在我在WebApi中遇到了一個問題,那就是我需要在用戶調用時採取不同的行爲。在這種情況下,我忽略範圍並使用他/她的角色,並且用戶獲得「read_only」訪問權限,這正是我想要的。
這是正確的,它不再有意義使用ScopeAuthorize屬性,我需要做沿東西線的自定義混合屬性:
如果來電是一個用戶 - 然後用角色來確定無障礙 其他 - 使用示波器確定可訪問性
還是我完全誤解了?