Laden...
N
Noodles
myCSharp.de - Experte
107
Themen
4.644
Beiträge
Dabei seit
08.02.2004
Herkunft
Leipzig
Erstellt vor 9 Jahren

Hallo,

wie validiert ASP.NET Identity (OAuthAuthorizationServerProvider) die Requests?
Ich habe folgende Situation:

public partial class Startup {
    public void Configuration(IAppBuilder app) {
        app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);

        var authServerOptions = new OAuthAuthorizationServerOptions() {
            AllowInsecureHttp = true,
            TokenEndpointPath = new PathString("/token"),
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(1),
            Provider = new SimpleOAuthProvider()
        };

        app.UseOAuthAuthorizationServer(authServerOptions);
        app.UseOAuthBearerAuthentication(new OAuthBearerAuthenticationOptions());
    }
}

Der Provider:

public class SimpleOAuthProvider : OAuthAuthorizationServerProvider {
    public override Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context) {
          context.Validated();
          return Task.FromResult<object>(null);
    }

    public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) {
        var allowedOrigin = "*";

        context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { allowedOrigin });
            
        var identity = new ClaimsIdentity(context.Options.AuthenticationType);
        identity.AddClaim(new Claim(ClaimTypes.Name, context.UserName));
        // ...

        var props = new AuthenticationProperties(new Dictionary<string, string>();
        var ticket = new AuthenticationTicket(identity, props);
        context.Validated(ticket);            
    }
}

Wenn ich nun per Postman einen Request (mit einem gültigen Token) absetze, dann hätte ich erwartet, dass ich nun in ValidateClientAuthentication ankomme. Dem ist aber nicht so.
Die tokenbasierte Authentifizierung an sich funktioniert, wenn ich das Token entferne erhalte ich keinen Zugriff, auch wenn ich es verändere werde ich ausgesperrt.
Wo muss ich dann nun eingreifen, wenn ich nun aber noch eigene Validierungen per Request ausführen will?

Erstellt vor 11 Jahren

Hallo,

ich möchte in einem Report ein Hintergrundbild ab Seite 2 anzeigen. Dazu habe ich folgenden Code in den Report eingefügt:

Public Function IsFirstPage()
 Return Me.Report.Globals!PageNumber = 1
End Function

Um Code zu sparen, zeige ich das Vorgehen an der Hintergrundfarbe (was auch nicht funktioniert):

Expression der BackgroundColor Eigenschaft des Report-Body:

=IIF(Code.IsFirstPage(), "Red", "Green")

Lasse ich mir den Wert von Code.IsFirstPage() auf der jeweiligen Seite ausgeben, steht auf Seite 1 "True", ansonsten "False".

Hat jemand eine Idee warum das Setzen des Hintergrundes nicht funktioniert? Wird die Hintergrundfarbe nur einmal gerendert und gilt dann für alle Seiten?
Alternativ kann ich natürlich auf Seite 1 ein Panel einbauen und mit der Hintergrundfarbe weiß belegen, dass würde das Problem lösen.
Dennoch interessiert mich ob der Report dieses dynamische Verhalten nicht kann?

Viele Grüße

Erstellt vor 12 Jahren

Hallo,

ich habe folgendes Problem. Auf dem Server A liegt ein WCF Service, welcher Daten an einen anderen WCF Service auf Server B weiterreicht. Die Daten die zu Server A kommen, sind auf Nachrichtenebene verschlüsselt.
Dazu habe ich mit dem Windows Zertifizierungsdienst eine eigen CA und die entsprechenden Zertifikate ausgestellt und eingespielt. Auch hat der ApplicationPool Account Leserechte auf den Private Key.
Im Eventlog treten allerdings bei jeder Verbindung folgende Fehler auf:

Fehlermeldung:
Fehler beim Anmelden eines Kontos.

Antragsteller:
Sicherheits-ID: NULL SID
Kontoname: -
Kontodomäne: -
Anmelde-ID: 0x0

Anmeldetyp: 3

Konto, für das die Anmeldung fehlgeschlagen ist:
Sicherheits-ID: NULL SID
Kontoname:
Kontodomäne:

Fehlerinformationen:
Fehlerursache: Bei der Anmeldung ist ein Fehler aufgetreten.
Status: 0xc000006d
Unterstatus:: 0x80090325

Prozessinformationen:
Aufrufprozess-ID: 0x0
Aufrufprozessname: -

Netzwerkinformationen:
Arbeitsstationsname: -
Quellnetzwerkadresse: -
Quellport: -

Detaillierte Authentifizierungsinformationen:
Anmeldeprozess: Schannel
Authentifizierungspaket: Microsoft Unified Security Protocol Provider
Übertragene Dienste: -
Paketname (nur NTLM): -
Schlüssellänge: 0

und

Fehlermeldung:
Fehler beim Anmelden eines Kontos.

Antragsteller:
Sicherheits-ID: SYSTEM
Kontoname: MyServer$
Kontodomäne: MyDomain
Anmelde-ID: 0x3e7

Anmeldetyp: 3

Konto, für das die Anmeldung fehlgeschlagen ist:
Sicherheits-ID: NULL SID
Kontoname:
Kontodomäne:

Fehlerinformationen:
Fehlerursache: Unbekannter Benutzername oder ungültiges Kennwort.
Status: 0xc000006d
Unterstatus:: 0xc0000064

Prozessinformationen:
Aufrufprozess-ID: 0x1e8
Aufrufprozessname: C:\Windows\System32\lsass.exe

Netzwerkinformationen:
Arbeitsstationsname: MyServer
Quellnetzwerkadresse: -
Quellport: -

Wenn ich den WCFTrace aktiviere, erhalte ich noch folgendes:> Fehlermeldung:

Der Konfigurationsevaluierungskontext wurde nicht gefunden

Die Daten kommen trotzdem alle da an wo sie hinsollen, also in der Datenbank. Aber hat jemand eine Idee was diese Fehler sind? Hat er ein Problem mit den Zertifikaten?

Erstellt vor 12 Jahren

Hat evtl. jemand Erfahrung mit http://orchardproject.net/?

Erstellt vor 12 Jahren

Hallo,

ich suche ein CMS was ein Ticktsystem für den Support mitbringt oder als Plugin nachinstalliert werden kann. Ach ja, es macht nichts, wenn es für die kommerzielle Nutzung frei ist bzw. wenig kostet. Gern hätte ich ein .NET basiertes System.

Mit fiel jetzt spontan DotNetNuke (frei für kommerzielle Nutzung, oder?) ein, in Verbindung mit oldturtle.net.

Hat jemand Erfahrungen damit oder kann Alternativen nennen?

Viele Grüße

Erstellt vor 12 Jahren

Du kannst beliebige Datenquellen an einen Report übergeben. Hier mal ein Beispiel eines Client-Reports:


var dataSource = new ReportDataSource("dataSet", myCustomObjectList);
var localReport = new LocalReport();
localReport.DataSources.Clear();
localReport.DataSources.Add(dataSource);

Wenn Du den Report schon an den ReportViewer übergeben hast, musst Du ihn nicht instanziieren. Du erhälst ihn dann mit:

myReportViewer.LocalReport
Erstellt vor 12 Jahren

Schau mal hier.

Erstellt vor 12 Jahren

Vielleicht für den einen oder anderen interessant.
http://projects.nikhilk.net/ScriptSharp

Erstellt vor 12 Jahren

Das ist nun irgendwie ein Widerspruch.
Du nutzt keine anderen Attribute und nutzt auch NUR dieses - nichts MVC eigenes.

Das hast Du nicht gefragt und ich nicht behauptet!

Was das TrySkip da im speziellen tut / soll weiß ich nicht.

Sorry, dann muss sich informieren, bevor man antwortet!

Zudem sollte der Fehler Code eher 401(Unauthorized) sein und nicht 403 (Forbidden), oder?

Nein muss er nicht.

An alle anderen.
Nach ewigen versuchen habe ich dann einen "wirklich" guten Tip im Internet gefunden, mit welchem das ganze jetzt augenscheinlich funktioniert.
Folgende Zeile muss im if-Zweig ergänzt werden:

filterContext.Result = new EmptyResult();

Warum es in einer anderen Anwendung funktioniert hat und meiner aktuellen nicht, muss ich jedoch noch ergründen.

10 von 4.644 Beiträgen