对于Asp.net Core,是否有用于通过Azure AD进行身份验证的程序包?
例如,查询Nuget时存在以下身份验证包:
我尝试使用MicrosoftAccount软件包,但在成功连接后,我从Microsoft页面收到以下错误:
SET !VAR1 EVAL("var randomNumber=Math.floor(Math.random()*10 + 1); randomNumber;")
URL GOTO=http://www.iopus.com
' waits 1 to 10 seconds
WAIT SECONDS={{!VAR1}}
没有使用中间件包的examples,但中间件包提供易用性,并且更直接地与Identity框架集成。
是否存在使用Azure AD的直接包,或者无论如何指定MicrosoftAccount包应指向组织/ azure / tenant网址?
答案 0 :(得分:0)
这对我有用:
authBuilder
.AddMicrosoftAccount(Auth.Constants.AuthenticationScheme, options =>
{
options.ClientId = clientId;
options.ClientId = clientSecret;
if (tenantId != null)
{
var resource = "https://graph.microsoft.com";
options.AuthorizationEndpoint = $"https://login.microsoftonline.com/{tenantId}/oauth2/authorize?resource={resource}";
options.TokenEndpoint = $"https://login.microsoftonline.com/{tenantId}/oauth2/token?resource={resource}";
}
});
tenantId
- 查看"端点"来自"应用注册的部分"刀。您可以从网址中提取,也可以直接使用这些网址,而不是我上面提到的网址。clientId
- 这是您的"应用程序ID"在您注册的应用程序中。clientSecret
- 这是您创建并在" Keys"下注册的密码。您已注册的应用程序部分。然后,您可以使用https://graph.microsoft.com访问令牌获取更多信息,例如添加以下选项:
options.ClaimActions.DeleteClaim(ClaimTypes.Name);
options.ClaimActions.MapJsonKey(ClaimTypes.Name, "displayName");
options.ClaimActions.MapJsonKey(ClaimTypes.NameIdentifier, "userPrincipalName");
options.Events = new OAuthEvents
{
OnCreatingTicket = async context =>
{
// Get the GitHub user
var request = new HttpRequestMessage(HttpMethod.Get, "https://graph.microsoft.com/v1.0/me/");
request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", context.AccessToken);
request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await context.Backchannel.SendAsync(request, context.HttpContext.RequestAborted);
response.EnsureSuccessStatusCode();
var contents = await response.Content.ReadAsStringAsync();
var user = JObject.Parse(contents);
context.RunClaimActions(user);
}
};