Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von Papst
Thema: Gibt es Beispiele zum Vorgehen bei hybrider Authentifizierung via IdentityServer4?
Am im Forum: Web-Technologien

Danke schon mal, ich versuche das einmal als Prototyp zu implementieren und werde mich sicher noch einmal mit Problemen melden ;)

Thema: Gibt es Beispiele zum Vorgehen bei hybrider Authentifizierung via IdentityServer4?
Am im Forum: Web-Technologien

Zusammengefasst, nur um sicher zu gehen:
Ich würde IdentityServer nutzen um eine Authentifizierung gegenüber zwei Identitätsprovidern zu machen, nämlich AzureAD und ASP.NET Core Identity, welche im Identityserver selber gehostet wird(?).
IdentityServer übernimmt dann auch die Authorisierung (natürlich nach der Authentifizierung) und meine App spricht ausschließlich mit dem IdentityServer.

@Abt:
Hast du ein gutes Beispiel oder einen Einstieg parat, den du empfehlen könntest?
Ich würde sonst denke ich mit dem von t2t geposteten Beispiel (https://github.com/IdentityServer/IdentityServer4.Quickstart.UI) anfangen, google gegen lokale Identitäten ersetzen und darauf dann eine Beispiel App andocken.

Thema: Gibt es Beispiele zum Vorgehen bei hybrider Authentifizierung via IdentityServer4?
Am im Forum: Web-Technologien

Danke für eure Tipps, mein Problem ist bei den ganzen Dokus die ich mittlerweile gewälzt habe, dass immer nur ein Provider beschrieben ist. Aller Versuche mehr als einen Provider zu finden haben mich bisher zu IdentityServer geführt.

Für Azure AD Login fand ich dies sehr hilfreich: https://docs.microsoft.com/en-us/azure/architecture/multitenant-identity/authenticate
Vermutlich macht es Sinn, einfach mal einen Prototypen zu implementieren und zu schauen wie sich alles verhält.

Die Frage die mir bleibt ist, was genau ist der Sinn des IdentityServer4, wenn ich doch alles über Middleware abbilden kann?

Thema: Gibt es Beispiele zum Vorgehen bei hybrider Authentifizierung via IdentityServer4?
Am im Forum: Web-Technologien

Hi,
ich stehe vor der (für mich) Herausforderung eine Angular Website mit mehreren Identitätsprovidern als Login Möglichkeit zu konzeptionieren.
In der ASP.NET Core Welt habe ich leider noch nicht so viel gemacht und deshalb versucht mich etwas über die Dokus zu hangeln und bin dabei auf IdentityServer4 gestoßen und glaube, dass dieser genau das leisten könnte was ich brauche:
Für die App soll es möglich sein, sich aus einem bestimmten AzureAD und mittels einer anderen Authentifizierungsart (evtl. ASP.NET Core Identity) zu authentifizieren.

Bevor ich zur konkreten Frage komme erst einmal mein Verständnis - nicht, dass hier schon das Problem liegt:
-> IdentityServer4 wird als eigene Applikation ausgeführt, meine (und ggf. andere Apps) nutzen diesen Dienst zum Authentifizieren der Nutzer
-> In meiner App konfiguriere ich "lediglich" dass die Benutzer sich gegen meine Instanz von IdentityServer4 authentifizieren müssen.
-> In IdentityServer4 konfiguriere ich die möglichen Loginmechanismen in der Startup Klasse (hier gebe ich Tenant etc. für das Azure AD an)

Ich habe leider kein Beispiel und auch in der Doku keinen Hinweis gefunden, wie ich IdentityServer dazu bekomme die Möglichkeit zu haben gegen mehrere UserStore's zu authentifizieren.
Liegt hier vielleicht der Fehler und ich brauche für jeden Store (bzw. jeden Identitätsprovider) einen einen IdentityServer?
Wo läge dann der Vorteil gegenüber einer direkten Authentifizierung?

An Beispielen bin ich leider nicht so arg fündig geworden, die offiziellen habe ich mir die ganzen Konfigurationen angeschaut - muss aber gestehen, dass ich zwar denke die Konfiguration zu verstehen, aber sie auf Anhieb noch nicht nachbauen könnte.
Gibt es irgendwo ein Beispiel für meinen Anwendungsfall?

Thema: Projekt "Messdaten graphisch darstellen", suche Lösungsansätze
Am im Forum: Rund um die Programmierung

Bezüglich CSV vs. SQL-Datenbank:
Gerade wenn du eine ganze Reihe von Daten speichern willst, die eine zeitliche Abhängigkeit haben (was auf Messdaten in jedem Fall zutrifft), finde ich eine CSV Datei unpraktisch.
Entweder nimmst du dir für das parsen der CSV eine passende Lib - diese deserialisieren meistens die komplette Datei, auch wenn du nur 2 Datenpunkte aus der Mitte oder vom Ende benötigst, oder du musst das komplette Handling selber schreiben, was den Vorteil einer Lib wieder zunichte macht. Dann doch lieber SQL (DBMS sei dabei erst einmal egal) und ein OR-Mapper, damit es einfach zu handeln geht.

Thema: Projekt "Messdaten graphisch darstellen", suche Lösungsansätze
Am im Forum: Rund um die Programmierung

Grob umrissen hast du es ja schon.

Für WPF habe ich ganz gute Erfahrungen mit Oxyplot gemacht.

Zur Architektur bietet sich für WPF ja MVVM mehr als an.
Für das generelle würde ich dir empfehlen

  • abstrahiere die Datensammel Schnittstelle. Vielleicht kommt ja irgendwann noch einmal etwas Netzwerkbasiertes dazu
  • Speichere Daten zwischen, die du aktuell nicht mehr anzeigst. Nimm dafür etwas wie SQLite
  • Überlege ob es sinnvoll ist, gleichartige Daten von mehreren Geräten anzeigen zu können und schaffe deine Datenstruktur von Anfang an so

Thema: Daten aus MySQL auslesen via auf einem Server liegenden PHP Code.
Am im Forum: Rund um die Programmierung

Dein PHP Script muss die Daten ausgeben, diese Ausgabe musst du dann mit deine WinForm Applikation lesen.

Hierfür bietet sich soetwas wie eine WebApi an - oder einfacher gesagt, dein PHP Script konvertiert die gelesenen Daten in Json Objekte und liefert diese mittels echo aus.

Thema: UserControl mit TimePicker im XAML bringt Fehler "Typname nicht vorhanden"
Am im Forum: GUI: WPF und XAML

Die Fehlermeldung sagt, dass der Typ TimePicker nicht im Typ TimePicker enthalten ist.
Damit das passen würde bräuchtest du folgendes Konstrukt:


class TimePicker
{
  class TimePicker
  {
  }
}
Namespaces werden in XAML / XML nicht mit der Punktnotation angegeben, sondern als xmlns Direkt
ive. Wenn es der Namespace TimePicker sein sollte müsste das schematisch so aussehen:

<UserControl x:Class="tp:TimePicker" xmlns:tp="TimePicker[;Assembly,...]">

Thema: [Teilweise gelöst] WebBrowser-Element auf IE 9 oder höher nutzen?
Am im Forum: GUI: Windows-Forms

Ich würde vermuten (ohne in die Doku geschaut zu haben), dass die installierte IE Version genutzt wird.
Alternativ kannst du soetwas wie den Awesomium SDK nutzen

Thema: Excel Spalte auslesen
Am im Forum: Grundlagen von C#

Einfach mit dem Debugger durchsteppen und schauen an welcher Stelle das passiert.

Thema: Serial Port umbauen in Raw Port
Am im Forum: Netzwerktechnologien

Wenn dort ein Ethernet Port ist hast du eine Netzwerkverbindung und musst entsprechend Daten über z.B. TCP oder UDP dorthin senden.
die "raw" Verbindung in Putty ist eine TCP Verbindung, die du auch mit dem TcpClient aufbauen kannst.
Hierbei sendest du einfach über die Schreibenden und Lesenden Methodes einer TcpClient Instanz mit dem Server (also dem Software Teil hinter deiner Ethernetbuchse an der Wage).
Wie das geht ist in dem verlinkten Beispiel und in tausenden Online verfügbaren TcpClient Artikeln beschrieben :)

Thema: SelectedItem-Property einer Combobox an die Property meines ausgewählen Objekts binden
Am im Forum: GUI: WPF und XAML

Das klingt für mich als würdest du nach dem Primary Key suchen und stattdessen die Methode GetHashCode verwenden.

Thema: Bei Visual express Studio 2012 kein "Web Template" vorhanden?
Am im Forum: Web-Technologien

Und zur Vollständigkeit: Die Express Varianten von Visual Studio haben immer nur einen Einsatzzweck. Entweder Desktop, Web oder UWP (ab 2013). Wenn du also die Desktop Version hast (wovon ich ausgehe, weil du keinen Namenszusatz angegeben hast), kannst du damit nur Konsolen-, WPF und Windows Forms Projekte erstellen.
Für ASP.NET bräuchtest du dann die Edition "Express for Web". Wenn du Lizenz technisch die Möglichkeit hast, nimm am besten die Community Edition.

Thema: Wie kann ich ein Array (String) in den AD User Properties setzen?
Am im Forum: Grundlagen von C#

Ich bin nicht sicher, ob du überhaupt Arrays dort abspeichern kannst.
Mehrzeilige Werte aber wohl schon: https://social.technet.microsoft.com/Forums/scriptcenter/en-US/2f915bfe-2adb-4b27-9b6c-4881e7234986/creating-users-with-powershell-and-inputting-multiline-street-address-from-csv-file?forum=ITCG

Thema: Funktion durch Timer "zufällig" aufrufen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

if (DateTime.Now == nächsteAuführung)

Halte ich für gefährlich...

Wenn es ein Service werden soll, würde ich zu Quartz.NET und Topshelf greifen. Ansonsten ist das Task Scheduler wohl die richtige Wahl.

Thema: ContextMenue auf ComboBox-Item
Am im Forum: GUI: WPF und XAML

Das liegt daran, dass das ContextMenu nicht im Visual Tree liegt.
Der Binding Proxy ist eine Möglichkeit (vermutlich die bessere), es gibt auch die Möglichkeit über das Tag Attribut:https://stackoverflow.com/questions/15033522/wpf-contextmenu-woes-how-do-i-set-the-datacontext-of-the-contextmenu

Thema: Daten ablesen über seriellen Port wirft IndexOutOfRangeException
Am im Forum: Grundlagen von C#

Die Fehlermeldung sagt doch schon wo das Problem liegt.

Du versuchst auf einen nicht existenten Array Index zuzugreifen. Im Stack Trace der Exception steht sogar in welcher Codezeile.

Thema: CSV-Datei als DataSource für Chart
Am im Forum: GUI: Windows-Forms

Es wird dir hier niemand eine Lösung vorkauen. Dann wäre auch dein Lerneffekt nicht gut.

Was du machen musst:

  1. Den Inhalt der CSV in ein Zahlenformat (z.B. double) parsen. Siehe meinen Post oben, wenn dein CSV eine immer gleichbleibende Struktur hat, gibt es dafür Bibliotheken, die dir das komplett abnehmen können.
  2. Herausfinden, wie du das an das ChartControl binden kannst
  3. Das Chart Control zur Anzeige bringen

Thema: MVVM - Frame Navigation (Alternativen)
Am im Forum: GUI: WPF und XAML

Meine erste Idee wäre den Contentbereich durch ein <ContentControl /> zu realisieren, wobei sich die Content Property an eine Property aus dem MainViewModel binden ließe.
Dann könntest du im MainViewModel z.B. UserControls bereitstellen die den Inhalt darstellen.

Da du diese im MainVM initialisierst könntest du auch direkt Events binden für alles, was du mit dem Inhalt ausserhalb des MainVM machen möchtest.

Thema: CSV-Datei als DataSource für Chart
Am im Forum: GUI: Windows-Forms

Zitat von Jens91
Jetzt soll das Programm aber später auf unterschiedlichen Rechnern laufen. Wie mach ich das da mit dem Pfad?

Da gibt es - wie immer - mehrere Lösungsansätze :)

Wenn es beim Pfad bleiben soll, entweder über den Installer des Programms in der Registry hinterlegen oder in der/einer config Datei konfigurierbar machen.

Da es sich bei deinem Programm aber um ein .NET Programm zu handeln scheint könntest du auch einfach die Solution mit in dein neues VS Projekt einhängen und es mit deployen (oder sogar aus der .exe eine dll machen, dann bräuchtest du nicht mehr über das CSV Format gehen sondern kannst direkt mit Datenstrukturen arbeiten).
Alternativ könntest du es als externe Referenz einbinden.

Edit:
Wegen des CSV, hat die CSV Datei ein festes Datenformat? Dafür gibt es Parser Bibliotheken, die das passend lesen können.

Thema: Batch per ClickEvent starten und CMD in TextBox auslesen
Am im Forum: Grundlagen von C#

Zusätzlich kommst du während dein Prozess läuft gar nicht bis zum lesen, denn du wartest mit


Send.WaitForExit();
erst darauf, dass der Prozess schließt, bevor du irgendwas ausliest.

Thema: Ticken Web Entwickler anders als Desktop Entwickler?
Am im Forum: Web-Technologien

Excel ist halt leider das Programmiertool der Assistentin des Abteilungsleiters (Überspitzt und Klischeehaft), aber leider wird es doch immer wieder für Aufgaben genommen, für die es nicht geeignet ist, nur weil man es "eben mal schnell mit Excel probiert hat".
Wird bei uns in der Firma auch so eingesetzt.

Aber um nicht abzuschweifen:
Aus meiner Erfahrung heraus hat jede Entwicklergruppe - und ich würde hier jetzt noch einmal die Embedded, Logik und Regelungstechniker in den Topf werfen - einen ganz eigenen Blick auf ähnlich gelagerte Probleme.
Während der Embedded Entwickler lieber Bitleisten durch die Gegend transferiert und das für einen Generischen Ansatz hält sieht das ein Webentwickler als nicht mehr Zeitgemäß und auch erst recht nicht generisch an.... Vielleicht auch, weil er noch nie etwas mit einzelnen Bits zu tun hatte.

Als Fazit kann man denke ich sagen: Gefrickelt wird überall und nirgendwo. Ab einem bestimmten Niveau denke ich bei keiner der Gruppen mehr. Bei Web mag es vielleicht am ehesten auffallen, weil es das Einfallstor für Programmieranfänger ist.

Thema: Portierung von .NET Framework nach .NET Core mit SerialPort - Fehlermeldung beim Schutzgrad
Am im Forum: Grundlagen von C#

Hallo Thommy,

mit der SerialPortStream-Bibliothek hast du doch etwas gefunden, was unter .NET Standard funktionieren sollte.
Du brauchst lt. Github Seite allerdings eine 2.x Version, die wohl noch nicht in nuget verfügbar ist.
Auch heißt die Klasse dann nicht mehr SerialPort sondern SerialPortStream und das handling ist anders.

Thema: StackPanel.Children.Remove entfernt kein Element und wirft keinen Fehler
Am im Forum: GUI: WPF und XAML

Zitat von ChrisProg

Wenn ich dort einen Haltepunkt setze und dann im Direktfenster

this.stackPanel1.Children.Remove(child)
eingebe, erscheint als Antwort:
Zitat
Der Ausdruck wurde ausgewertet und weist keinen Wert auf.
Das gleiche gilt für den Befehl

this.stackPanel1.Children.Clear()

Die Methoden Clear() und Remove(..) haben als Rückgabetyp void. Insofern ist das, was der Debugger sagt genau richtig.

Thema: ObservationCollection<Tuple<int,int,int>> in WPF Darstellen
Am im Forum: GUI: WPF und XAML

Wenn du mit Databinding arbeiten willst wirst du denke ich ein eigenes Control bauen [EDIT] oder eine fertige Lib wie z.B. das OxyPlot von oben verwenden[/EDIT] müssen.
Im Canvas zeichnen finden sich bei Google passende Anleitungen, wie z.B. diese hier:https://social.msdn.microsoft.com/Forums/vstudio/en-US/828a21f9-db01-4f9a-8461-b9a585820b50/how-to-draw-an-ellipse-inside-a-canvas-at-specific-coordinates?forum=wpf

Thema: ObservationCollection<Tuple<int,int,int>> in WPF Darstellen
Am im Forum: GUI: WPF und XAML

Was spricht gegen ein eigenes Model?


class Coordinate
{

public int X { get; }
public int Y { get; }
public int Value { get; }
}

Wie gesagtr um es auf der UI darzustellen würde ich es in einer Form wandeln, die die UI besser versteht als eine Koordinate mit Wert.

Thema: ObservationCollection<Tuple<int,int,int>> in WPF Darstellen
Am im Forum: GUI: WPF und XAML

Muss es ein Tuple sein?

Generlel würde ich kein Tupel Databinden, sondern für die Daten für die Oberfläche aufbereiten.
Du könntest zum plotten z.B. eine Charting Lib wie OxyPlot nehmen und dann an der Position ein passendes Label plotten (Annotation).

Thema: Uhrzeitabhängiges Aufrufen von Forms
Am im Forum: GUI: Windows-Forms

Um zu sagen, was die sauberste Lösung ist, bin ich wohl zuwenig mit WinForms unterwegs.
Das bei dir klingt aber, als würdest du die Forms zu mehr als zum anzeigen und manipulieren von Daten nehmen.

Vielleicht hilft dir das einen Denkanstoß zu einem best-practice zu finden:
[Artikel] Drei-Schichten-Architektur
Nimmst du die Form nur zum anzeigen und erledigst das nachladen zeit- oder event-gesteuert in der richtigen Schicht, ist es alles etwas schöner.

Thema: Uhrzeitabhängiges Aufrufen von Forms
Am im Forum: GUI: Windows-Forms

Die Möglichkeiten sind da so groß wie du sie dir vorstellen kannst.

Du könntest das auch über eine überliegende Instanz managen, die sich um den Timer kümmert und dann das Form schließt.
Alternativ kannst du beide Form's permanent geöffnet lassen und nur verstecken:
[FAQ] Kommunikation von 2 Forms
Oder aber jedes Form prüft seine Restlaufzeit selber und ruft dann das andere wieder auf.

Eine Kombination ist natürlich auch denkbar :)

Thema: Uhrzeitabhängiges Aufrufen von Forms
Am im Forum: GUI: Windows-Forms

Ein Timer ist schon genau das, was du dafür brauchst.
Beim Aufruf des Form musst du diesen instanziieren und berechnen wie lange er laufen soll (angepeilte Uhrzeit - jetzt). Beim Ablauf öffnest du dann das andere Form.

Übrigens: if und else sind keine Schleifen; for und while oder foreach sind schleifen.