Lesender Cookie-Wert: Verwenden des URL-Rewrite-Provider-Moduls - Überprüfung bei System.Web.Configuration.MachineKeySection.EncryptOrDecryptData nicht möglich
Ich muss @ anhängNUTZERNAM mit dem URL-Rewrite-Modul an die URL auf der Serverseite senden.
Warum: Ich habe eine Website site1, wenn sich USER bei site1 anmeldet, wird ihm ein Link zu @ angezei site2., Dieser Link ist eine URL oder ein Bericht. (Tableau). Authentifiziertes Ticket wurde mit @ erstel FormAuthentication in site1. WannBENUTZE klickt auf den Link, authentifiziertNutzernam sollte an site2 übergeben werden.
Ich könnte den Benutzernamen von der Client-Seite anhängen, aber aus Sicherheitsgründen muss ich den Benutzernamen an die URL auf der Server-Seite anhängen, bevor er ausgeführt wird.
So habe ich mich für die Verwendung des URL-Rewrite-Providers entschieden, der das @ aufnimmNutzernam durch Entschlüsseln des Cookie-Werts wie unten gezeigt
namespace PlatformAnalysisUrlProvider.PlatformAnalysisProvider
{
class AnalysisRewriteProvider: IRewriteProvider, IProviderDescriptor
{
public void Initialize(IDictionary<string, string> settings,
IRewriteContext rewriteContext)
{
}
public string Rewrite(string value)
{
string[] cookievalues = value.Spli('=');
FormAuthentication ticket = FormAuthentication.Decrypt(cookievalues[1]);
//Decrypt throws error as shown below
}
}
}
Cookie Values
cookievalues [0] = has the key
cookievalues [1] = has the value
Beispiel
233AWJDKSHFHFDSHFJKDFDKJFHDKJFKDJFHDHFDHFKJHDFKJHDFJHDKJFHDSKJFHDF
Es ist ein Cookie-Wert. Aber entschlüsseln passiert nicht
Ich erhalte folgenden Fehler
Unable to validate data.
at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(
Boolean fEncrypt, Byte[] buf, Byte[] modifier, Int32 start,
Int32 length, IVType ivType, Boolean useValidationSymAlgo,
Boolean signData)
Hier sind meine Einstellungen in IIS für URL Rewrite
Angeforderte URL: Entspricht den MusternUsing: Regular ExpressionIgnore Case - ÜberprüftConditions - Eingabe: {HTTP_COOKIE} Typ: Entspricht dem Muster Muster:. *Action Type - RewriteRewrite URL -http: //11.155.011.12 {HTTP_URL} & USERNAME = {PlatformAnalysisUrlProvider: {C: 0}}Ich habe auch MACHINE KEY eingerichtet, wie von diesem Forum vorgeschlagen.
Ich habe diesen Beitrag für die Entwicklung verwiesen
Eines der Stapelüberlauf-Posts deutete darauf hin, dass es sich möglicherweise um ein Firewall- oder Virenschutzproblem handelt. Ich habe jedoch kein Virenschutzprogramm installiert oder keine Firewall aktiviert.
Es hilft wirklich, wenn mich jemand zu @ verweicode sample Hier wird die in IIS und dem URL Rewrite-Anbieter gehostete Website verwendet.
Updating Error Log
MODULE_SET_RESPONSE_ERROR_STATUS Benachrichtigung - "PRE_BEGIN_REQUEST" HttpReason - "URL Rewrite Module Error"
Updating post with Machine Key Info
<MachineKey Description="AES" validation="SHA1"
descriptionKey="******"
validationKey="******" CompatibilityMode="Framework20SP2">
Grund kann @ se - Die Website, auf der Cookies erstellt werden, wird mit .NET Framework 4.5 entwickelt. Der Anbieter, bei dem wir den Cookie lesen, ist Framework 3.5. Kann das die Ursache sein? ODER Benötigen wir eine Konfigurationsdatei für das Provider-Projekt?
Aktualisierun - Ich habe Machine.config einen Maschinenschlüssel hinzugefügt, aber es hat immer noch nicht funktioniert:
Alternative Lösun
Add App.config to class Library
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings>
<!-- ... -->
<add key="SecurityKey" value="somevalue"/>
<!-- ... -->
</appSettings>
</configuration>
Copy config to GAC Folgen Sie diesem Blog -http: //techphile.blogspot.in/2007/02/2.htm
Encrypt den Wert refer here) und erstelle ein benutzerdefiniertes Cookie beim Login
Verwenden Sie die Decrption-Logik innerhalb des benutzerdefinierten Rewrite-Providers