我正在使用EF Core连接到已部署到Azure App Services的Azure SQL数据库。我正在使用访问令牌(通过托管身份获取)连接到Azure SQL数据库。
这是我的做法:
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
//code ignored for simplicity
services.AddDbContext<MyCustomDBContext>();
services.AddTransient<IDBAuthTokenService, AzureSqlAuthTokenService>();
}
Run Code Online (Sandbox Code Playgroud)
MyCustomDBContext.cs
public partial class MyCustomDBContext : DbContext
{
public IConfiguration Configuration { get; }
public IDBAuthTokenService authTokenService { get; set; }
public CortexContext(IConfiguration configuration, IDBAuthTokenService tokenService, DbContextOptions<MyCustomDBContext> options)
: base(options)
{
Configuration = configuration;
authTokenService = tokenService;
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
SqlConnection connection = new SqlConnection();
connection.ConnectionString = Configuration.GetConnectionString("defaultConnection");
connection.AccessToken = authTokenService.GetToken().Result;
optionsBuilder.UseSqlServer(connection);
}
}
Run Code Online (Sandbox Code Playgroud)
AzureSqlAuthTokenService.cs …
azure-active-directory entity-framework-core azure-sql-database ef-core-2.2
我正在构建一个MVC 5应用程序.我需要根据AD和SQL数据库或Web服务对人员进行身份验证.
要求是,如果一个人登录到公司网络或通过VPN连接,我必须记录它们而不要求凭据.如果用户通过互联网访问网站或者没有AD帐户,我必须使用表单身份验证.
我正在看这篇文章, 但这将与ASP.Net MVC和OWIN一起使用吗?还有其他选择吗?
提前致谢.
我使用 Azure AD 作为 IdentityServer4 的外部 IdP。要调用受 AzureAd 保护的 API,我需要从 Azure Ad 获取访问令牌。是否可以在登录过程中获取访问令牌并将其保存到声明中?
我正在使用 IdentityServer4 快速入门 UI。我试图在外部令牌的回调方法中捕获访问令牌,但在 HttpContext 或声明或 ProcessLoginCallbackForOidc 方法中没有找到。
IdentityServer4 Azure 广告配置:
services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddInMemoryIdentityResources(Config.GetIdentityResources())
.AddInMemoryApiResources(Config.GetApiResources())
.AddInMemoryClients(Config.GetClients())
.AddTestUsers(Config.GetUsers());
services.AddAuthentication()
.AddOpenIdConnect("oidc", "Azure AD", options =>
{
options.SignInScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme;
options.SignOutScheme = IdentityServerConstants.SignoutScheme;
options.Authority = "https://login.microsoftonline.com/fredhutch.onmicrosoft.com/";
options.ClientId = "<client id>";
options.Resource = "app_id from azure ad";
options.ClientSecret = "secret from azure ad";
options.ResponseType = "code id_token";
options.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = "sub",
RoleClaimType = "role"
};
});
Run Code Online (Sandbox Code Playgroud)
IdentityServer4 …
我正在尝试使用 Athena 查询 AWS S3库存列表。如果我只有一个源存储桶,我就可以执行此操作。我不确定如何配置它以与多个源存储桶一起使用。
\n\n我们使用所有默认配置选项,数据格式为 CSV。Hive 的 S3 Inventory 目标存储桶名称模式如下:
\n\n destination-prefix/source-bucket/config-ID/hive/dt=YYYY-MM-DD-HH-MM/symlink.txt\nRun Code Online (Sandbox Code Playgroud)\n\n因此,当我创建 Athena 表时,我必须使用静态配置单元路径。
\n\nCREATE EXTERNAL TABLE your_table_name(\n //column names\n)\nPARTITIONED BY (dt string)\n//options ignored\nLOCATION \'s3://destination-prefix/source-bucket/config-ID/hive/\';\nRun Code Online (Sandbox Code Playgroud)\n\n因此,如果我想查询多个源存储桶的库存数据,似乎我必须为每个“源存储桶”创建一个表。
\n\n或者,在不使用 Athena 的情况下,我尝试使用 AWS CLI 来执行此操作
\n\naws s3 ls s3://our-bucket-name/prefix/abc --recursive | awk \xe2\x80\x98$1 > \xe2\x80\x9c2019-04-01\xe2\x80\x9d\nRun Code Online (Sandbox Code Playgroud)\n\n但这首先获取每个文件,因为没有选项可以使用“S3 ls”设置 --include 或 --exclude
\n\n最后,问题是:
\n\n我可以配置 AWS Inventory 为多个 S3 存储桶生成清单,以便将所有内容放入同一个“hive”目录中(即在生成 Invetory 时忽略“source-bucket”前缀)吗?
是否可以配置 Athena 从多个配置单元位置读取?但由于有可能创建和删除新的存储桶,我想这会变得很难看。
是否有其他方法可以代替 Athena 或 AWS CLI …
我的 Azure B2C 具有自定义策略,并启用了本地登录和 Microsoft 帐户登录。我已经开始使用入门包并进行了一些修改,以添加用于验证的自定义逻辑并添加其他声明,如此处所述。
使用 Microsoft 帐户一切正常。但我遇到本地帐户登录问题。
电子邮件声明仅在用户注册时填充,但在登录时不填充。如果登录,电子邮件是“signInNames.emailAddress”声明的一部分。我尝试按照此处和此处的说明进行更改。我希望将电子邮件填充到电子邮件声明中,因为我的 API 使用此声明。
从我的 REST API 返回的其他 calim 不会添加到仅用于本地登录的令牌中。它们是为 Microsoft 帐户添加的。
谢谢。
更新:对于第 2 点,它是我的策略文件的问题,现已修复。
我正在使用 AWS Cognito 用户池来保护我的 Web 应用程序、移动应用程序和 API。我有一个定义了角色和权限的数据库。我想在登录过程中将“角色”添加到访问令牌,这样我就不需要进行数据库调用来检查用户角色。
我将无法使用 Cognito 自定义属性,因为人们可以从前端创建自定义角色,并且所有这些信息都保存在数据库中。