저는 현재 Kentor AuthServices를 사용하여 SP가 시작한 SSO를 구현하는 과정에있는 Asp.Net 핵심 웹 응용 프로그램을 보유하고 있습니다. 이제 IDP에서 idP로부터 다음과 같은 형식으로 메타 데이터 파일을 받았습니다.Kentor AuthServices AuthnRequests Asp.Net 코어를 전송합니다.
<?xml version="1.0" encoding="UTF-8"?>
<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion"
entityID="https://exampleidp.com">
<md:IDPSSODescriptor
protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
<md:KeyDescriptor use="signing">
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<X509Data>
<X509Certificate>ExampleCertificate</X509Certificate>
</X509Data>
</KeyInfo>
</md:KeyDescriptor>
<md:NameIDFormat>urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified
</md:NameIDFormat>
<md:SingleSignOnService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Location="https://exampleidp.com/loginpage"/>
<md:SingleLogoutService
Binding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect"
Location="https://exampleidp.com/logoutpage"/>
<saml:Attribute Name="accountID"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
FriendlyName="accountID"/>
<saml:Attribute Name="email"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
FriendlyName="email"/>
<saml:Attribute Name="firstName"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
FriendlyName="firstName"/>
<saml:Attribute Name="lastName"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic"
FriendlyName="lastName"/>
</md:IDPSSODescriptor>
<md:ContactPerson contactType="technical">
<md:GivenName>Exampleidp</md:GivenName>
<md:SurName>Support</md:SurName>
<md:EmailAddress>[email protected]</md:EmailAddress>
</md:ContactPerson>
<md:Organization>
<md:OrganizationName xml:lang="en">Example Idp</md:OrganizationName>
<md:OrganizationDisplayName xml:lang="en">Example Idp</md:OrganizationDisplayName>
<md:OrganizationURL xml:lang="en">http://exampleidp.com/</md:OrganizationURL>
</md:Organization>
</md:EntityDescriptor>
두 개의 서명 인증서가 있습니다. 내 Startup.cs에서 나는 ConfigureServices에 다음 코드를 추가했습니다 :
.AddSaml2(options =>
{
options.SPOptions.EntityId = new EntityId("http://myapp.com");
options.IdentityProviders.Add(
new IdentityProvider(
new EntityId("myapp.com/Metadata.xml"), options.SPOptions)
{
LoadMetadata = true
});
})
및 구성에 다음 코드 :
app.UseAuthentication();
UPDATE
관통보고 후를 소스 코드 더보기 마침내 내 머리를 감쌀 수 있었고 다음과 같이 AuthnRequests를 생성 할 수있었습니다 (IDP로 확인) :
<saml2p:AuthnRequest xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
ID="idcc70905185a04a94b05282e0c544e086" Version="2.0" IssueInstant="2017-
11-13T14:47:56Z"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
AssertionConsumerServiceURL="http://myapp.com/saml">
<saml2:Issuer>http://myapp.com</saml2:Issuer>
<saml2p:NameIDPolicy Format="urn:oasis:names:tc:SAML:1.1:nameid-
format:unspecified" AllowCreate="true" />
</saml2p:AuthnRequest>
편집 : 내 주요 관심사는 지금은 IDP에 AuthnRequest를 보내야하는 방법이다. 올바른 방향에 있다면 IdP가 제대로 처리 할 수 있도록 AuthnRequest를 수축 및 인코딩해야합니다. 나는 이것이 (이미 RelayState 정보를 포함 할 필요가있는 것처럼 보입니다.) 기존의 Kentor 코드를 사용하거나 나 자신을하기에 충분할 정도로 쉽게 달성 할 수 있을지 궁금합니다.
는
_ idP에 전송해야하는 AuthnRequest를 작성해야합니다. _ 시도한 내용을 보여주는 코드를 제공하면 도움이됩니다. – Noel
나는 내가 시도한 것에 대해 몇 가지 코드를 가지고 있다면 도움이 될 것이라고 이해한다.하지만이 시점까지는 패키지를 파헤 치고 구현 과정을 배우려고 노력해 왔으며, 이제는 꽤 많은 시간을 투자 한 후에 성공적인 구현에 가깝지 않았습니다. 그래서 나는 누군가가 올바른 방향으로 나를 안내 할 수 있거나 나에게 약간의 조언을 해줄 수 있기를 바란다. 나는이 시점에서 나 자신을 혼란스럽게 생각한다. 내가 가치있는 것을 생각해 내면 내가 가진 것을 편집하고 게시하게 될 것입니다. – Jared