我在Azure中創建了WebApp。我有基於AzureAD的認證...在Web應用程序中獲取Azure角色
其實所有的用戶都有相同的權利......我需要有一組管理員和世界其他地方。
我看到,在Azure的門戶我的web應用程序有一些地方角色中列出的Acces control (IAM)
... 我可以在我的應用程序使用這些角色?
其實我在我看來,做的是:
如果我理解正確的是被命名爲「基於聲明」的認證,但我想嘗試使用角色 Based驗證...
我想也是這樣做
var userIdentity = (System.Security.Claims.ClaimsIdentity)User.Identity;
var claims = userIdentity.Claims;
var roleClaimType = userIdentity.RoleClaimType;
var roles = claims.Where(c => c.Type == System.Security.Claims.ClaimTypes.Role).ToList();
但角色列表是空的...
這裏是在public void Configure(IApplicationBuilder app,...
app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions
{
ClientId = Configuration["Authentication:AzureAd:ClientId"],
Authority = Configuration["Authentication:AzureAd:AADInstance"] + Configuration["Authentication:AzureAd:TenantId"],
CallbackPath = Configuration["Authentication:AzureAd:CallbackPath"],
Events = new OpenIdConnectEvents
{
OnTicketReceived = async context =>
{
var user = (ClaimsIdentity)context.Ticket.Principal.Identity;
if (user.IsAuthenticated)
{
var firstName = user.FindFirst(ClaimTypes.GivenName).Value;
var lastName = user.FindFirst(ClaimTypes.Surname).Value;
var email = user.HasClaim(cl => cl.Type == ClaimTypes.Email) ? user.FindFirst(ClaimTypes.Email).Value : user.Name;
var connectedOn = DateTime.UtcNow;
var userId = user.Name;
var myUser = await repository.GetAsync<Connection>(userId);
if (myUser == null)
{
myUser = new Connection(userId)
{
FirstName = firstName,
LastName = lastName,
Email = email
};
}
myUser.LastConnectedOn = connectedOn;
List<Connection> myList = new List<Connection>() { myUser };
var results = await repository.InsertOrMergeAsync(myList);
Claim clm = new Claim("IsAdmin", myUser.IsAdmin.ToString(), ClaimValueTypes.Boolean);
user.AddClaim(clm);
}
return;
}
},
}
});
的我Startup.cs
Autentication代碼,也是我appsettings.json
"Authentication": {
"AzureAd": {
"AADInstance": "https://login.microsoftonline.com/",
"CallbackPath": "/signin-oidc",
"ClientId": "xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx",
"Domain": "mysite.azurewebsites.net",
"TenantId": "xxxxxxxx-xxxx-xxxx-xxxxx-xxxxxxxxxxxx"
}
}
對我來說主要問題是如何創建角色...... $ approverRole = CreateAppRole的用法-Name 「批准者」 - 描述「批准者有能力改變任務的狀態。」'有點模糊不清......上述示例中的 – Serge
正在談論Manifest和web.config我在ASP.NET中沒有這樣的東西核心應用程序...如果我理解的很好,RoleManager已經實現了.Core框架...另外我使用的是AzureTable Storage而不是Sql/CoreFramework ...所以我不能採用IdentityUser ... – Serge
清單可以在Azure門戶中找到。查找Azure Active Directory - >應用程序註冊 - >您的應用程序 - >清單。 – juunas