我有一个MVC内部网站点,需要使用AD帐户进行身份验证.
我设置ADFS 3.0(Win Server 2012 R2)并按此设置ADFS信赖方信任.
这篇文章介绍了Ws-Federation OWIN组件,我想使用它.它提到了如何连接到Azure AD,但没有关于ADFS的任何内容.
我尝试设置配置属性"MetadataAddress"和"Wtrealm"以匹配我在ADFS中配置但在运行时我收到错误:
A default value for SignInAsAuthenticationType was not found in IAppBuilder Properties.
This can happen if your authentication middleware are added in the wrong order, or if one is missing.
Run Code Online (Sandbox Code Playgroud)
我正在寻找正确的方法删除此错误
我正在使用EF 6.1.1和Database First.当我将存储过程导入edmx并生成DBContext时,它看起来像这样:
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<TestSP_Result>("TestSP", params[]...)
Run Code Online (Sandbox Code Playgroud)
返回一个ObjectResult <T>,它实现了IDbAsyncEnumerable <T>所以我这样做是为了读取数据异步:
IDbAsyncEnumerable<T> enumerable = objectResult as IDbAsyncEnumerable<T>;
IDbAsyncEnumerator<T> enumerator = enumerable.GetAsyncEnumerator();
List<T> list = new List<T>();
bool moreItems = await enumerator.MoveNextAsync(CancellationToken.None);
while (moreItems)
{
list.Add(enumerator.Current);
moreItems = await enumerator.MoveNextAsync(CancellationToken.None);
}
return list;
Run Code Online (Sandbox Code Playgroud)
这真的是异步读取数据吗?我附加了探查器,实际的SQL语句在ExecuteFunction行中运行,而不是在枚举结果时.
有没有一种正确的方法从DBContext运行存储过程并异步读取结果?
c# asynchronous entity-framework entity-framework-6 entity-framework-6.1
我正在尝试从TFS 2012 Update 2迁移到TFS 2013.根据文档,我在新硬件上安装了TFS 2012.2,备份/恢复了数据库,然后安装了TFS 2013作为升级.
我可以看到团队项目和构建.问题是,当我右键单击一个构建以排队一个新构建并单击"参数"选项卡时,我只得到一个空白面板.我最好的猜测是加载参数时出错.请注意,这些版本在TFS 2012.2中运行良好.
如果我从头开始创建一个新的构建并使用他们的新默认模板(TfvcTemplate.12.xaml),我仍然会得到相同的错误.
我没有在输出窗口或事件日志中看到任何错误.
事实证明这是VS2013连接到TFS2013 的已知错误
我有一个使用Windows身份验证的ASP .NET MVC 5站点.主页面仅显示当前的标识名称(Controller.User.Identity.Name)以进行测试.将网站部署到服务器(Windows Server 2012)并在IIS上启用Windows身份验证后,我将访问直接访问服务器的页面.它会提示输入凭据,我提供一次AD用户名/密码就行了.到现在为止还挺好.
现在,如果我在AWS Elastic Load Balancer后面有相同的服务器(只有那个服务器)并且我在负载均衡器上点击了该站点,我发现了两个问题:
这很奇怪.几乎像Kerberos票据因负载均衡器而丢失或混乱.我从这里尝试了这个和第4步,仍然没有运气.
有任何想法吗?
authentication kerberos windows-authentication amazon-web-services
我已经部署了一个MVC站点,mysite.mydomain.co可以根据ADFS 进行身份验证并创建一个auth cookie:
public partial class Startup
{
public void ConfigureUserAuth(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(WsFederationAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
AuthenticationType = WsFederationAuthenticationDefaults.AuthenticationType
});
app.UseWsFederationAuthentication(
new WsFederationAuthenticationOptions
{
MetadataAddress = ConfigurationManager.AppSettings["adsfs.MetadataAddress"],
Wtrealm = ConfigurationManager.AppSettings["adsfs.Wtrealm"]
});
}
}
Run Code Online (Sandbox Code Playgroud)
在启用了CORS的“ myapi.mydomain.com”上还部署了一个WebAPI网站:
GlobalConfiguration.Configuration.EnableCors(new EnableCorsAttribute("https://mysite.mydomain.com", "*", "*") { SupportsCredentials = true });
Run Code Online (Sandbox Code Playgroud)
用户转到mysite.mydomain.com。MVC站点通过ADFS进行身份验证,我看到设置了身份验证cookie没问题。
我的应用程序主要是SPA,因此从javascript开始,有AJAX调用可以myapi.mydomain.com使用jQuery,将withCredentials选项设置为true:
$.ajaxSetup({
xhrFields: { withCredentials: true }
});
Run Code Online (Sandbox Code Playgroud)
该选项应该将安全凭证(cookie)发送到API。在运行时,我没有看到将cookie设置为API,并且按预期收到了401(未授权)错误。
如果我在localhost上运行相同的代码(当然,除了将源更改为localhost之外),我都会看到Cookie毫无问题地流入了API。我最好的猜测是它有效,因为它是相同的子域(localhost),而在我的服务器上是“ mysite”与“ myapi”。
有任何想法吗?
我正在尝试设置IIS 8(Windows Server 2012)以接受安全WebAPI端点的客户端证书.在这篇文章之后,我创建了一个自签名证书和一个客户证书:
makecert.exe -r -n "CN=MyCompany" -pe -sv MyCompany.pvk -a sha1 -len 2048 -cy authority MyCompany.cer
makecert.exe -iv MyCompany.pvk -ic MyCompany.cer -n "CN=MY Client" -pe -sv MyClient.pvk -a sha1 -len 2048 -sky exchange MyClient.cer -eku 1.3.6.1.5.5.7.3.2
pvk2pfx.exe -pvk MyClient.pvk -spc MyClient.cer -pfx MyClient.pfx -po THE_PASSWORD
Run Code Online (Sandbox Code Playgroud)
我在IIS服务器上安装了根证书MyCompany.cer,然后在IIS管理器/ SSL设置上我选择了"接受"单选按钮以允许网站接受客户端证书.
在客户端a有一个C#测试控制台应用程序,它加载客户端证书MyClient.pfx文件并调用WebAPI端点:
var certHandler = new WebRequestHandler();
certHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
certHandler.UseProxy = false;
var certificate = new X509Certificate2(File.ReadAllBytes(@"C:\MyClient.pfx"), "THE_PASSWORD");
certHandler.ClientCertificates.Add(certificate);
var client = new HttpClient(certHandler);
var result = client.GetAsync("https://MyServer/api/MyEndpoint").Result;
string …Run Code Online (Sandbox Code Playgroud) 当我在Visual Studio 2013上调试单元测试时,创建NLog Logger的代码行:
private static Logger _logger = LogManager.GetCurrentClassLogger();
返回需要至少35秒.我正在使用NLog Nuget包版本2.0.1.2.我没有VS2012的那种行为.有没有人见过这个?