Я создал этот файл start.cs< /код>:
Код: Выделить всё
[assembly: OwinStartup(typeof(ApplicationName.Startup))]
namespace ApplicationName
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
ClientId = ConfigurationManager.AppSettings["AzureAd:ClientId"],
Authority = $"{ConfigurationManager.AppSettings["AzureAd:Instance"]}{ConfigurationManager.AppSettings["AzureAd:TenantId"]}",
ClientSecret = ConfigurationManager.AppSettings["AzureAd:ClientSecret"],
RedirectUri = ConfigurationManager.AppSettings["AzureAd:RedirectUri"],
PostLogoutRedirectUri = ConfigurationManager.AppSettings["AzureAd:PostLogoutRedirectUri"],
SignInAsAuthenticationType = CookieAuthenticationDefaults.AuthenticationType,
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = context =>
{
context.HandleResponse();
context.Response.Redirect("/Error/Errors?message=" + context.Exception.Message);
return Task.CompletedTask;
},
AuthorizationCodeReceived = async context =>
{
var clientId = ConfigurationManager.AppSettings["AzureAd:ClientId"];
var clientSecret = ConfigurationManager.AppSettings["AzureAd:ClientSecret"];
var authority = $"{ConfigurationManager.AppSettings["AzureAd:Instance"]}{ConfigurationManager.AppSettings["AzureAd:TenantId"]}";
var RedirectUri = ConfigurationManager.AppSettings["AzureAd:RedirectUri"];
var cca = ConfidentialClientApplicationBuilder.Create(clientId)
.WithClientSecret(clientSecret)
.WithAuthority(new Uri(authority))
.WithRedirectUri(RedirectUri)
.Build();
var result = await cca.AcquireTokenByAuthorizationCode(new[] { "User.Read" }, context.Code).ExecuteAsync();
// Extrair as informações do usuário a partir do token recebido
var userClaims = result.ClaimsPrincipal.Claims;
var identity = new ClaimsIdentity(context.AuthenticationTicket.Identity.AuthenticationType)
identity.AddClaims(userClaims);
// Adiciona a nova identidade com as reivindicações ao ticket
context.AuthenticationTicket = new AuthenticationTicket(identity, context.AuthenticationTicket.Properties);
}
}
});
}
}
}
Код: Выделить всё
startup.csКод контроллера следующий:
Код: Выделить всё
[HttpGet]
public async Task ActionName()
{
var claimsPrincipal = HttpContext.User as ClaimsPrincipal;
if (claimsPrincipal != null)
{
// Obter as informações da clain
var userName = claimsPrincipal.FindFirst(ClaimTypes.Name)?.Value;
var userEmail = claimsPrincipal.FindFirst(ClaimTypes.Email)?.Value;
// more code...
}
}
Я просто хочу получить электронное письмо от вошедшего в систему пользователя.
Подробнее здесь: https://stackoverflow.com/questions/786 ... ket-claims