簡體   English   中英

在ASP.NET之外使用MachineKey.Protect

[英]Use MachineKey.Protect Outside of ASP.NET

我需要加密ASP.NET之外的cookie(Console App,Powershell等),但由於這個cookie最終將被我的MVC應用程序讀取,因此需要使用相同的密鑰加密。

我可以在ASP.NET之外使用MachineKey類但是我不能指定加密類型或密鑰,因為這些在應用程序的web.config中概述,在此上下文中不存在。 由於沒有配置,因此每次都會隨機生成密鑰。

如何使用下面相同的解密密鑰加密數據,以便保證以后由我的MVC應用程序成功解密?

<machineKey 
  validationKey="207FE3B8E01D0FF81871D7F3EFC082A14341A7820942D24D3BEF8954CAE53D860F46FBCDDA73F752CE1052D475D442CC8C14FC814739A757D52D152EF5EE179E"
  decryptionKey="326C47E59EB1B38AEA84DBC9633BB770C318A740E477C82F3A8D9506F030D953"
  validation="SHA1" decryption="AES"

/>

一些可能的想法。

  1. 只需在控制台應用程序中使用App.config,並從主項目的web.config鏡像機器密鑰。
  2. 以編程方式抓取機器密鑰。 要做到這一點,你需要機器密鑰的路徑(也許你可以將它存儲在DB,Windows注冊表或某個地方?)。 MSDN有一些很好的例子

抓住鑰匙基本上是:

Configuration config = WebConfigurationManager.OpenWebConfiguration(configPath);
MachineKeySection configSection = (MachineKeySection)config.GetSection("system.web/machineKey");

然后,只需使用正確的方法來加密cookie。 請記住,某些ASP.NET成員資格提供程序會將其他數據序列化到cookie中,因此根據您使用的數據,這可能無法實現。 此外,如果您的應用使用Cookie的UserData部分,那么這可能會破壞它。

暫無
暫無

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

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