我有一个可用的 .NET Core 3.0 MVC 网站,使用 AzureAD 进行身份验证,一切正常。我已经开始将一些前端页面迁移到 Blazor(在同一个项目中),但无法进行身份验证。
我已将 @attribute [Authorize] 标记添加到 Index.razor 的顶部,但我没有像将其添加到标准 ASP.NET MVC 控制器时那样重定向到 Azure 进行登录。
启动.配置服务
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = CookieAuthenticationDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
options.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
})
.AddCookie()
.AddOpenIdConnect(options =>
{
Configuration.GetSection("OpenIdConnect").Bind(options);
});
services.AddAuthorizationCore(options =>
{
options.AddPolicy(Policies.AccessRole, Policies.IsAccessPolicy());
options.AddPolicy(Policies.AdminRole, Policies.IsAdminPolicy());
});
Run Code Online (Sandbox Code Playgroud)
启动.配置
app.UseAuthentication();
app.UseAuthorization();
Run Code Online (Sandbox Code Playgroud)
Index.razor
@page "/"
@attribute [Authorize(Policy = Policies.AccessRole)]
Run Code Online (Sandbox Code Playgroud)
政策
public static class Policies
{
public const string AccessRole = "Access";
public const string AdminRole = "Admin";
public static AuthorizationPolicy IsAccessPolicy() …Run Code Online (Sandbox Code Playgroud) 在我的 C# 应用程序中,我尝试通过 Graph API 搜索用户。我唯一的参数是存储在 onPremisesSamAccountName 字段中的用户名。
通过 Graph Explorer 我可以成功运行查询
Graph Explorer 为我提供了要使用的 C# 代码
GraphServiceClient graphClient = new GraphServiceClient( authProvider );
var users = await graphClient.Users
.Request()
.Search("onPremisesSamAccountName:myusername")
.Select("id,displayName")
.GetAsync();
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试使用该代码时,我收到一条错误消息,指出“搜索不是一种方法”,我是否需要添加额外的包才能使用“搜索”?