gpt4 book ai didi

asp.net - 在 C# 中设置 Azure ACS

转载 作者:行者123 更新时间:2023-12-02 05:01:10 25 4
gpt4 key购买 nike

我正在查看几个使用 ACS 的示例,显然它们确实让我感到愚蠢。

我在线查看了教程,似乎我所需要的只是配置中的以下行:

  httpRuntime requestValidationMode="2.0"

但是此 sample project 中还有一些其他示例SimpleMVC4 的配置中没有这样的行。更糟糕的是,我没有看到任何引用 ACS 库的内容,无论它是什么。

另一方面,MVC3 示例有一堆乱码,包括对 javascript 的 ajax 请求,嗯!?

    public const string HrdPath = "v2/metadata/IdentityProviders.js";

/// <summary>
/// Gets the url with its query string representing this request
/// </summary>
/// <returns></returns>
public string GetUrlWithQueryString()
{
uriBuilder.Path = HrdPath;
uriBuilder.Query = parameters.ToQueryString();

return uriBuilder.Uri.AbsoluteUri;
}

在 Raxor View 中

    $("#signIn").click(function () {
//
// Explicit JSONP callback can be used to do client side caching of identity provider data.
//
$.ajax({
url: "@Html.Raw(Model.GetUrlWithQueryString())",
dataType: "jsonp",

哈!?

看看我能得到一些简单的(白痴证明)指针吗?

  1. 我是信赖方
  2. 我有一个 MVC Controller 操作,我想告诉用户这里是他们可以使用的身份提供商 (IP) 及其各自的 URL 以及生成将要验证的 token 在下面的步骤 (3) 中。如何在 C# 代码中实现这一点?
  3. 一旦客户端、ACS、IP 完成了他们的业务,我不在乎那是什么,就我而言,所有这些都在客户端、ACS 和 IP 之间。我应该收到用户的另一个请求。我该如何处理这个请求?如何验证用户是否犹太洁食?并且他们没有伪造上述步骤 (2) 中的 token 。

最佳答案

我最近也经历过类似的痛苦。我对此完全是新手,很难理解这一切。我发现Pluralsight Courses from Dominick Baier对于理解这些概念非常有用。

现在回答你的问题。

I have got an MVC controller action, I want to tell users here are the Identity Providers (IP) that they can use, and their respective URLs as well as generating the tokens that will be verified in step (3), below. How do I get to this in a C# code?

请查看这篇博客文章,了解如何在您端创建登录页面:https://www.simple-talk.com/cloud/development/creating-a-custom-login-page-for-federated-authentication-with-windows-azure-acs/

Once, the client, ACS, IP are done with their business, I don't care what that is, as far as I'm concerned all those is between the client, ACS and the IP. I should get another request from the user. What do I do with this request? How do I verify if the user is kosher? And that they did not falsify the token from step (2) above.

我认为您不需要在这里做任何特别的事情。 ASP.Net 管道通过将 PrincipalIsAuthenticated 属性设置为 true 来为您处理此问题。这是我的代码当前的样子(主要取自上面的博客文章)。对我来说,整个应用程序都受到保护,默认情况下用户会登录主页。我检查用户是否经过身份验证。如果他们未经过身份验证,我会向他们显示 ACS 中配置的所有身份提供程序,并且用户可以使用其中任何一个身份提供程序登录。身份验证成功后,ACS 会将用户发送回同一页面,这次用户已通过身份验证。在我的代码中,如果用户经过身份验证,我会执行应用程序所需的一系列声明转换。

Controller

public ActionResult Index()
{
if (!ClaimsPrincipal.Current.Identity.IsAuthenticated)
{
var idpsUrl = "IdentityProvidersUrl Taken from ACS Login Page";
var webClient = new WebClient()
{
Encoding = Encoding.UTF8,
};
var jsonList = webClient.DownloadString(idpsUrl);
var acsResult = JsonConvert.DeserializeObject<List<IdentityProvider>>(jsonList);
return View(acsResult);
}
else
{
var principal = ClaimsPrincipal.Current;
var claims = principal.Claims;
//If any claims transformation needs to be done, that can be done here.
}
}

查看

@{
ViewBag.Title = "Index";
}


<h2>Index</h2>

@foreach (var p in Model)
{
<p>
<a href="@p.LoginUrl">@p.ToString()</a>
</p>
}

型号

public class IdentityProvider
{
public List<string> EmailAddressSuffixes { get; set; }
public string ImageUrl { get; set; }
public string LoginUrl { get; set; }
public string LogoutUrl { get; set; }
public string Name { get; set; }

public override string ToString()
{
return Name;
}
}

关于asp.net - 在 C# 中设置 Azure ACS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17078929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com