Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET Core上使用具有标识的MSAL注册外部用户_C#_Asp.net Core_Asp.net Identity_Microsoft Graph Api_Msal - Fatal编程技术网

C# 在ASP.NET Core上使用具有标识的MSAL注册外部用户

C# 在ASP.NET Core上使用具有标识的MSAL注册外部用户,c#,asp.net-core,asp.net-identity,microsoft-graph-api,msal,C#,Asp.net Core,Asp.net Identity,Microsoft Graph Api,Msal,问题: 在我的ASP.NET Core 3.1 MVC Web应用程序中,我使用services.AddSignIn(配置)在my startup.cs(由提供)中,我想在登录时注册一个用户,回调方法ExternalLoginInfo info=wait\u signInManager.getexternallogininfosync()始终返回null 背景: 我有一个应用程序,它使用 注册和存储用户所有用户都使用他们的Microsoft 帐目 我想增强应用程序以使用MS Graph API

问题: 在我的ASP.NET Core 3.1 MVC Web应用程序中,我使用
services.AddSignIn(配置)
在my startup.cs(由提供)中,我想在登录时注册一个用户,回调方法
ExternalLoginInfo info=wait\u signInManager.getexternallogininfosync()始终返回null

背景:

  • 我有一个应用程序,它使用 注册和存储用户所有用户都使用他们的Microsoft 帐目
  • 我想增强应用程序以使用MS Graph API(达到Sharepoint应用程序) 一些文件的网站),所以我修改了应用程序以使用 用于针对Graph API进行身份验证
  • 我用过 要尝试这些功能并顺利登录,我可以连接 图形API也是如此
详情: My appsettings.json:

"AzureAd": {
    "Instance": "https://login.microsoftonline.com/",
    "Domain": "something.onmicrosoft.com",
    "TenantId": "GUID",
    "ClientId": "GUID",
    "CallbackPath": "/signin-oidc",
    "SignedOutCallbackPath ": "/signout-callback-oidc",
    "ClientSecret": "GUID"
  }
启动cs:

services.AddDbContext<UserDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection"), u => u.MigrationsAssembly("DatabaseLayer.Core")));
        services.AddIdentity<AppUser, IdentityRole>(options =>
        {
            options.User.RequireUniqueEmail = true;
        })
            .AddEntityFrameworkStores<UserDbContext>()
            .AddDefaultTokenProviders();

        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.Unspecified;
            // Handling SameSite cookie according to https://docs.microsoft.com/en-us/aspnet/core/security/samesite?view=aspnetcore-3.1
            options.HandleSameSiteCookieCompatibility();
        });

        services.AddOptions();


        services.AddSignIn(Configuration); 
services.AddDbContext(选项=>
options.UseSqlServer(
Configuration.GetConnectionString(“DefaultConnection”),u=>u.MigrationsAssembly(“DatabaseLayer.Core”);
服务.附加性(选项=>
{
options.User.RequireUniqueEmail=true;
})
.AddEntityFrameworkStores()
.AddDefaultTokenProviders();
配置(选项=>
{
//此lambda确定给定请求是否需要非必要cookie的用户同意。
options.checkApprovered=context=>true;
options.MinimumSameSitePolicy=SameSiteMode.Unspecified;
//根据标准处理SameSite cookiehttps://docs.microsoft.com/en-us/aspnet/core/security/samesite?view=aspnetcore-3.1
options.HandleSameSiteCookieCompatibility();
});
services.AddOptions();
服务。AddSignIn(配置);
问题:为了注册用户,我需要配置什么来获取任何返回的外部登录?

根据,使用MSAL捕获外部用户是不可能的。此外,也不可能使用任何内部用户,因为它们会干扰登录的MSAL用户

所以微软的ASP.NET核心身份框架与他们的身份框架不兼容,尼斯。(遗憾的是,这使得MSAL对我来说毫无用处,我想不出任何商业案例,生产性应用程序不需要任何内部用户存储库才能正常工作。即使我只需要存储用户的设置,我也会为此使用identity framework)