本概觀著重於在 MIP SDK 中重新發佈。 當應用程式需要允許使用者編輯檔案,但必須保留有關擁有者、權限、內容金鑰等的原始 發佈授權 資訊時,需要重新發佈。
模式看起來可能像這樣:
- 用戶開啟受保護的檔進行編輯。
- 只有在使用者具有適當權限的情況下,才必須允許使用者編輯檔案。
- 使用者編輯,然後儲存檔。
要完成這項工作的 MIP SDK 虛擬程式代碼可能如下所示:
-
mip::FileHandler建立指向目標檔案的 。 - 儲存
mip::ProtectionHandler的mip::FileHandler方法所公開的GetProtection()。 - 請透過呼叫 方法來檢查使用者是否具有
AccessCheck()權限。 - 使用
mip::FileHandler的GetDecryptedTemporaryFileAsync()或GetDecryptedTemporaryStreamAsync()取得暫時解密的輸出。 - 編輯暫存盤案或串流內容並儲存。
- 建立一個指向暫存檔的新
mip::FileHandler實例,然後使用SetProtection()方法,並將儲存的mip::ProtectionHandler作為參數提供。 - 認可變更。
使用原始檔案中的 , mip::ProtectionHandler 擁有者、內容 ID 和內容金鑰會保留在已編輯的文件上。 此重新發佈案例需要應用程式保留原始 mip::ProtectionHandler的參考。
實施
如先前所述,類別 mip::FileHandler 會公開讀取、寫入及移除標籤和保護資訊的方法。 如需查看支援操作的完整清單,請參閱mip::FileHandler的參考資料。
此案例使用 下列方法 mip::FileHandler:
GetProtection()CommitAsync()GetDecryptedTemporaryFileAsync()SetProtection()
此案例也會使用 mip::ProtectionHandler,其會公開函式來加密和解密受保護的數據流和緩衝區、執行存取檢查、取得發佈授權,以及從受保護的資訊取得屬性。 方法 AccessCheck() 將用來驗證使用者是否有權編輯檔案。
若要順利完成此重新保護案例,請檢閱 [後續步驟] 下的 [快速入門],並確定應用程式會建置並成功列出標籤。
從檔案建立保護處理程式並解密檔案
mip::ProtectionHandler 會公開函式來加密和解密受保護的數據流和緩衝區、執行存取檢查、取得發佈授權,以及從受保護的資訊取得屬性。
mip::ProtectionHandler 物件是藉由提供 ProtectionDescriptor 或序列化發行許可證來建構。 在此使用案例中,當解密已受保護的內容或保護已建構授權的內容時,會使用發佈授權。
mip::FileHandler公開名為 的方法,該mip::ProtectionHandler方法GetProtection()會從與 .mip::FileHandler
mip::ProtectionHandler一旦擷取物件,就可以用來驗證用戶的檔案存取層級,解密檔案,稍後在編輯檔案之後加密檔案。
mip::ProtectionHandler
AccessCheck()的 用來驗證使用者具有檔案的特定許可權,並根據結果傳回布爾回應。 例如,若要確認使用者有權編輯,請呼叫傳入值 「EDIT」 的方法。 如果結果為 true,允許使用者編輯檔案。
一旦驗證編輯權限,請使用 mip::FileHandler 和 GetDecryptedTemporaryFileAsync() 來擷取暫時解密的檔案。
如需詳細資訊,請參閱 使用敏感度標籤來套用加密來限制內容的存取。
重要
存取檢查和強制執行完全由應用程式開發人員決定。 具有 VIEW 許可權的用戶能夠解密受保護的資訊。 應用程式需要驗證授與使用者的一組許可權,並透過資訊保護控制來強制執行這些許可權,例如防止複製、編輯或擷取螢幕擷取畫面。 未能正確實施保護措施可能會導致敏感性資訊暴露。
套用保護來儲存和發佈編輯的檔案
解密檔案後,可以編輯檔案。 編輯作業完成後,即可認可變更。 使用暫存檔案建立物件 IFileHandler ,以處理已認可的檔案。 然後,可以使用從源檔擷取的對象來保護 IProtectionHandler 暫存盤。