- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个使用 Azure ACS 和 .net 4.5 使用声明设置的应用程序。我的应用程序也使用保管箱。我想知道是否可以让用户单独使用 Dropbox 来识别他们自己。
当用户使用 dropbox 和唯一 ID 登录时,我从 dropbox 获得了一个 token 。我在 .net 管道中的哪个位置告诉它我已经对用户进行了身份验证,这样的主体也会在下一个请求中设置。
为了简化示例,假设我有一个包含两个输入的表单。名字,通过。如果名称为 1234 并且密码为 1234。那么我想告诉 asp.net 管道用户已通过身份验证。这可能吗?或者我是否需要创建自定义 token 处理程序以将其集成到 WIF 中?
更新
我发现了这一点:我希望对解决方案发表评论,如果存在安全问题我应该注意。
var sam = FederatedAuthentication.SessionAuthenticationModule;
if (sam != null)
{
var cp = new ClaimsPrincipal(new ClaimsIdentity(new List<Claim> {new Claim("Provider","Dropbox")}, "OAuth"));
var transformer = FederatedAuthentication.FederationConfiguration.IdentityConfiguration.ClaimsAuthenticationManager;
if (transformer != null)
{
cp = transformer.Authenticate(String.Empty, cp);
}
var token = new SessionSecurityToken(cp);
sam.WriteSessionTokenToCookie(token);
}
所有代码:
public HttpResponseMessage get_reply_from_dropbox(string reply_from)
{
var response = this.Request.CreateResponse(HttpStatusCode.Redirect);
var q = this.Request.GetQueryNameValuePairs();
var uid = q.FirstOrDefault(k => k.Key == "uid");
if (!string.IsNullOrEmpty(uid.Value))
{
var sam = FederatedAuthentication.SessionAuthenticationModule;
if (sam != null)
{
var cp = new ClaimsPrincipal(new ClaimsIdentity(new List<Claim> {new Claim("Provider","Dropbox")}, "OAuth"));
var transformer = FederatedAuthentication.FederationConfiguration.IdentityConfiguration.ClaimsAuthenticationManager;
if (transformer != null)
{
cp = transformer.Authenticate(String.Empty, cp);
}
var token = new SessionSecurityToken(cp);
sam.WriteSessionTokenToCookie(token);
}
}
response.Headers.Location = new Uri(reply_from);
return response;
}
public async Task<string> get_request_token_url(string reply_to)
{
var client = new HttpClient();
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("OAuth",
string.Format("oauth_version=\"1.0\", oauth_signature_method=\"PLAINTEXT\", oauth_consumer_key=\"{0}\", oauth_signature=\"{1}&\"",
"<dropboxkey>","<dropboxsecret>"));
var data = await client.GetStringAsync("https://api.dropbox.com/1/oauth/request_token");
var pars = data.Split('&').ToDictionary(k=>k.Substring(0,k.IndexOf('=')),v=>v.Substring(v.IndexOf('=')+1));
return "https://www.dropbox.com/1/oauth/authorize?oauth_token=" + pars["oauth_token"]
+ "&oauth_callback=<MYSITE>/api/dropbox/get_reply_from_dropbox?reply_from=" + reply_to;
}
它的工作原理是用户请求身份验证 url,当用户对我的应用程序进行身份验证时,它会返回到 get_reply_from_dropbox 并登录用户。
我还需要处理其他一些事情,比如如果请求不是来自保管箱怎么办。
最佳答案
我使用 WIF 3.5(不完全相同)为我的网站做了这个,但它确实一起使用了 ACS+forms auth+OAuth,基本上它使用 form auth(你可以完全控制)或使用 ACS/OAuth 和链接帐户一起使用或仅单独使用 ACS/OAuth。
不过,您将不得不以不同方式处理注销。
DropBox 使用 OAuth,所以我会走那条路,然后如果您想“链接帐户”,请为链接到 DropBox Oauth 帐户的表单 auth 创建一个用户/密码。用户不一定必须知道正在使用什么身份验证约定。 ASP.NET MVC 4 在默认项目中内置了 OAuth/forms 身份验证。
关于c# - 使用 WIF 在 Asp.Net 4.5 上自定义身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13674391/
我试图了解 WIF 中主动和被动联合之间的区别。如果依赖方 (RP) 是 WCF 服务而不是 ASP.NET 应用程序,则似乎使用主动联合;如果 RP 是 ASP.NET 应用程序,则使用被动联合。这
新的路由服务如何处理安全性?根据http://blogs.microsoft.co.il/blogs/applisec/archive/2011/12/12/wcf-routing-and-messa
SessionAuthenticationModule 类中的事件之一是 SessionSecurityTokenReceived。这使我们能够查看从 AD FS 收到的 session token
SessionAuthenticationModule 类中的事件之一是 SessionSecurityTokenReceived。这使我们能够查看从 AD FS 收到的 session token
我需要安装 IdentityTrainingKitApril2020.VS2010,它让我安装 WindowsIdentityFoundation-SDK-4.0。 但设置 WIF SDK 失败并显示
我正在尝试为将使用 WIF 进行身份验证的 ASP.NET MVC3 应用程序开发身份验证插件。由于它是具有系统内配置的插件,因此我避免接触应用程序的 web.config 文件或其他任何内容。我已经
据我所知,在 WIF 1.0 中,Windows Identity 直接源自 IIdentity。在 WIF 4.5 中,Windows Identity 派生自实现 IIdentity 的 Clai
我很想知道我们如何可能从一个 WIF 应用程序发送一个安全 token ,该应用程序已经通过 WIF 启用的 WCF 服务的身份验证。 任何帮助都将得到认可 最佳答案 答案并不简单,但以下步骤构成了“
我已使用最新 WIF SDK(适用于 .NET 4.0)附带的被动和主动案例的项目模板成功创建了一个有效的自定义 STS。一切都按预期进行。 我现在正在尝试将我的 Web 应用程序和服务升级到 .NE
我正在考虑使用 Azure 访问控制来实现 SSO。但一些 Web 应用程序使用 .net 3.5。基于 Azure ACS 的 STS 是否支持 WIF 3.5 依赖方? 最佳答案 是的。这不是 A
我很难理解应该如何定义 claim 。网络上有很多关于创建声明的信息,但似乎没有一个是一致的。我在不同的帖子中发现了声明的四个属性: claim 类型 claim 值(value) 值类型 右 假设您
我一直在阅读有关 Windows Identity Foundation 的一些文章,并且对联邦提供程序有一些模糊的定义(可能是我的理解不准确)。但是,我没有看到一篇文章清楚地在身份提供者和联合提供者
我有一个 Web 应用程序,希望使用使用 Windows Identity Foundation 3.5 的自定义 STS 来保护它。所有示例在场景中都有一个被动 STS。为什么需要这个?如果您直接调
我正在尝试将声明感知 WCF 服务和客户端放在一起。 我正在使用 thinktecture Identity Server ,并且我通过查看“将 token 与 WCF/SOAP 一起使用”示例组装了
全部, 我一直在阅读很多有关基于声明的身份验证的内容,但仍然有些困惑。我试图巩固我的理解,特别是与SharePoint 2010/2013有关,但也与一般情况(即ASP.NET)有关。 我对各种技术术
我们有一个使用 WIF 的 ASP.NET 应用程序。我们的 web.config 文件有一个像这样的部分: 我看到的每个示例中,audienceUris 和 r
我们有一个现有的 ASP.NET 应用程序 (WebForms),它使用自行开发的身份验证。我们的任务是实现单点登录解决方案,并选择使用 WIF。 我们有一个正在运行的应用程序实例,我们通过使用子域(
在彻底搜索了 SO 的答案之后,这次我必须永远问我的第一个问题! 开始 : 我有一个 Windows 窗体应用程序,它使用十几个 WCF 服务来处理所有业务逻辑。 WIF 在每个 WCF 服务上实现,
我有一个站点是我们基于 WIF 的自定义 STS 的依赖方。我们最近实现了一个安全 token 缓存,如下所述:Azure/web-farm ready SecurityTokenCache .我们的
我们有一些应用程序可以使用表单例份验证通过传统的用户名/密码或电子邮件/密码方法进行身份验证。我们希望慢慢地将这些帐户迁移到 Windows Identity Foundation (WIF)。 将表
我是一名优秀的程序员,十分优秀!