this question과 유사하지만 인증의 순간에 추가 클레임을 받아야합니다. 나중에는 그렇지 않습니다.WIF : 인증시 반환 할 클레임을 지정하는 방법
내가 다른 웹 사이트에 인증 플러그인으로 내 RP를 구현하고있어, 그래서하지 (또는 오히려 모든 가능한 피하기 위해 같은 것) 할 수는 web.config
파일을 변경하거나 내 RP에 FederationMetadata.xml
을 추가하는 등의 일을.
나는 STS에 대해 성공적으로 인증을 했으므로 이제는 나를 전송하는 기본 사항 이외에 더 많은 주장을해야합니다. STS는 공개적으로 (또는 그 근처에서) 통제 할 수 없으며 많은 RP가 인증을받을 것입니다. 따라서 모든 RP가 특별한 대우를받을 것으로 기대하지 않습니다. 따라서 STS는 인증을 수행 할 때까지 내 RP에 대해 알지 못한다고 가정하고 인증이 완료된 후에는 모든 것을 잊어 버릴 것입니다.
앞에서 설명한 것처럼 WIF를 사용하고 있으며 코드에서 모든 작업을 수행하고 있습니다. 어떤 클레임을 보낼 지 지정해야합니까? 지금까지 내 코드는 다음과 같습니다.
// Init configuration
var config = new ServiceConfiguration();
config.AudienceRestriction.AllowedAudienceUris.Add(new Uri("https://MyAudienceURI/"));
config.CertificateValidator = System.IdentityModel.Selectors.X509CertificateValidator.None;
var issuers = new ConfigurationBasedIssuerNameRegistry();
issuers.AddTrustedIssuer("08F81147C44D95CDA617963AFF0650EF26578E4A", "http://STSIssuer/trust");
config.IssuerNameRegistry = issuers;
// Create the FAM
var fam = new WSFederationAuthenticationModule();
fam.ServiceConfiguration = config;
fam.PassiveRedirectEnabled = true;
fam.Issuer = "https://STSUrl/Default.aspx";
fam.Realm = "https://MyAudienceURI/";
fam.Reply = Request.Url.ToString();
fam.RequireHttps = false;
// Check the current request
var req = System.Web.HttpContext.Current.Request;
if (!fam.CanReadSignInResponse(req, true))
{
fam.RedirectToIdentityProvider("Nop.Plugin.ExternalAuth.WIF", Request.Url.ToString(), false);
Response.End();
}
var principal = ClaimsPrincipal.CreateFromIdentities(config.SecurityTokenHandlers.ValidateToken(fam.GetSecurityToken(fam.GetSignInResponseMessage(req))));
그래, 나도 알아 냈어. 그러나 특정 주장에 대한 요청을 전달하는 데 사용할 수있는 매개 변수 'fam.Request' 및'fam.RequestPtr '도 있습니다. 나는 그것을 사용했고 효과가 있었다. 그 대답이 유일하기 때문에 당신의 대답을 받아 들일 것입니다. :) –