Mam jakiś kod, który powinien działać w aplikacji konsoli i wykonuje inicjalizację dla użytkowników. Kod znajduje się w Dot Net Core 3.1 i muszę uzyskać wiadomość e-mail bieżącego użytkownika ze środowiska, aby wykonać zadanie. Jak mam to zrobić?
Z otoczenia widzę, że mogę uzyskać dostęp do nazwy użytkownika, ale jest to zasadniczo imię osoby.
Environment.UserName
Jakieś sugestie?
Zaktualizuj 1
Założeniem jest, że użytkownicy są zalogowani do systemu Windows / Mac z użytkownikiem Azure Active Directory i dlatego mają wszystkie niezbędne dane, które są tutaj e-mailem.
Zaktualizuj 2
az login
jest pierwszą akcją przed uruchomieniem aplikacji. Czy możemy wziąć coś z tego tokena?
2 odpowiedzi
Przedmowa: Ta odpowiedź zakłada znajomość OIDC, strukturę jwt i że znasz różnice i obowiązki access_token
i id_token
.
Ta odpowiedź jest oparta na tym blogu Post: HTTPS: // Mikhail.io/2019/07/how-azure-CI-Manages-access-tokens/.
Gdy użytkownik uruchamia az login
i przepływ uwierzytelniania OIDC odniosą sukces, a Azure CLI (az
) zapisze bieżący stan poświadczenia na dysku w ~/.azure/
. Od 2020 marca, wykonywalna az
nie próbuje zaszyfrować ani w inny sposób chronić swoje buforowane żetony OIDC z innych procesów użytkownika (na lepsze lub na gorsze) - w tym przypadku jest to dobra rzecz - pod warunkiem, że nie masz nic przeciwko złośliwe oprogramowanie łatwo nabbując swoje poświadczenia.
Adres e-mail użytkownika (przynajmniej ich adres e-mail powiązany z ich kontem AZUREAD) będzie wewnątrz ich tokenu tożsamości OIDC JWT ({x0}}) - nie wydaje się być buforowane przez {{x1} . access_token
Dotacje do dostępu do zasobu profilu użytkownika w pierwszej kolejności).
Ale zakładając, że do masz dostęp do zasobu profilu użytkownika, adres e-mail użytkownika będzie W mieście email
Właściwość roszczenia.
Nie można uzyskać bieżącego e-maila użytkownika systemów operacyjnych, ponieważ nie jest zdefiniowany.
Myślę, że odnoszę się do nazw użytkowników w stylu UPN, jak widać w systemach Windows Active Directory Domeny, które są formularza {userName}@{fqdn}
, np. alice@corp.bob.com
(gdzie corp.bob.com
jest w pełni kwalifikowaną nazwą domeny Active Directory). UPN jest często, ale nie zawsze, adres e-mail użytkownika z powodu domyślnej konfiguracji serwera Microsoft Exchange.
... ale UPNS nie istnieją na platformach, które nie używają usługi Active Directory, takich jak systemy wbudowane i większość instalacji Linuksa. Musisz użyć biblioteki LDAP w System.EnterpriseServices
, aby go spojrzeć (być może za pomocą ADSI).
Podobne pytania
Nowe pytania
c#
C # (wymawiane „patrz ostro”) jest językiem programowania wysokiego poziomu, statycznie typowanym, wieloparadygmatowym opracowanym przez firmę Microsoft. Kod C # zwykle jest przeznaczony dla rodziny narzędzi Microsoft .NET i czasów wykonywania, do których należą między innymi .NET Framework, .NET Core i Xamarin. Użyj tego tagu w przypadku pytań dotyczących kodu napisanego w C # lub C # formalnej specyfikacji.