Integração Proxy MVPD SAML
Visão geral overview-proxy-mvpd-saml-int
Este documento descreve o fluxo de autenticação SAML para integrações de proxy. Esses fluxos dependem dos dados de configuração do Proxy presentes na configuração do servidor de Autenticação do Adobe Pass. O Proxy MVPD envia seus dados de configuração de Proxy para o servidor de Autenticação do Adobe Pass por meio do Serviço Web de Proxy de Autenticação do Adobe Pass.
Dados de configuração de proxy proxy-config-data
Cada Proxy MVPD fornece dados de configuração de Proxy para seus MVPDs Proxy ao Serviço Web de Proxy de Autenticação da Adobe Pass. Os detalhes para que são abordados na documentação do Proxy Web Service. Para que o fluxo de Autenticação SAML funcione, os dados de configuração do Proxy precisam incluir as seguintes propriedades:
Fluxos de integração SAML saml-int-flows
Quando um assinante do MVPD visita o site ou aplicativo de um Programador, a Autenticação do Adobe Pass responde a uma chamada de API do site ou aplicativo com uma lista de MVPDs ativados para esse Programador. A integração pode ser direta ou por proxy; não há distinção entre elas para o Programador. Isso permite que os programadores apresentem a lista de MVPDs ativos de todas as maneiras que considerem adequadas. O assinante escolhe sua MVPD e a Autenticação da Adobe Pass redireciona o assinante para o Provedor de identidade específico da MVPD.
No caso de um Proxy MVPD integrado, a integração é feita entre a Autenticação do Adobe Pass e o Proxy do MVPD. A Autenticação Adobe Pass envia a solicitação de autenticação do usuário ao Proxy da MVPD, e o Proxy da MVPD lida com o redirecionamento. Para que o Proxy do MVPD saiba onde redirecionar a solicitação de autenticação do usuário, a Autenticação do Adobe Pass envia um identificador do MVPD na solicitação de autenticação SAML. Esse identificador é a MVPD ID especificada pelo Provedor de Proxy por meio do Serviço Web de Proxy, conforme especificado acima.
Autenticação authn-saml-int
Para que a Autenticação do Adobe Pass seja integrada a um Proxy MVPD, é necessário:
-
Uma lista de Proxy MVPD fornecida de MVPDs Proxy, enviada para o Serviço Web de Proxy da Adobe
-
Metadados SAML para o proxy MVPD principal
-
(Recomendado) - O Proxy MVPD processa o redirecionamento adicional para o URL da página de logon do Proxy MVPD
-
O Proxy MVPD precisa abrir as portas 443 e 80 para os seguintes IPs:
- 192.150.4.5
- 192.150.10.200
- 192.150.11.4
- 4.53.93.130
- 193.105.140.131
- 193.105.140.132
- 76.74.170.204
- 63.140.39.4
- 66.235.132.38
- 66.235.139.38
- 66.235.139.168
Solicitação e Resposta SAML de Autenticação authn-saml-req-resp
Na solicitação AuthN do SAML, as integrações de Proxy incluem a seguinte propriedade adicional que precisa ser manipulada pelo Proxy do MVPD. Essa propriedade é necessária para processar corretamente o solicitante em nome do MVPD por proxy e para renderizar a experiência de logon correta. (Essa propriedade é realçada na solicitação de exemplo abaixo.)
Propriedade de Escopo - Inclui um item IDPEntry que inclui a MVPD_ID e o MVPD Name específicos. Representa o MVPD que o usuário realmente selecionou no seletor do Programador e corresponde ao MVPD_ID especificado no Serviço Web Proxy.
Há uma propriedade de escopo adicional para RequestorID que pode ser usada para personalizar o logon para a marca específica do Programador (se necessário). Ou pode ser usado apenas para análises em que parte da solicitação é originária.
Na resposta do SAML AuthN, o Proxy MVPD deve especificar o Proxy MVPD como a Entidade IdP nas seguintes propriedades:
- Emissor SAML
- Qualificador de Nome
Solicitação de AuthN de Exemplo
<samlp:AuthnRequest
AssertionConsumerServiceURL="https://sp.auth-staging.adobe.com/sp/saml/SAMLAssertionConsumer"
Destination="DESTIONATION_URL"
ForceAuthn="false"
ID="_4cb70308-b445-462e-b044-f7d0323dde0c"
IsPassive="false"
IssueInstant="2012-04-03T15:41:25.884Z"
ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
Version="2.0"
xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
https://saml.sp.auth-staging.adobe.com
</saml:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
...........
</ds:Signature>
<samlp:NameIDPolicy AllowCreate="true"
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
SPNameQualifier="https://saml.sp.auth-staging.adobe.com"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" />
<samlp:Scoping xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<samlp:IDPList xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<samlp:IDPEntry Name="MVPD NAME" ProviderID="MVPD_ID"/>
</samlp:IDPList>
<samlp:RequesterID xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
RequestorID-Value
</samlp:RequesterID>
</samlp:Scoping>
</samlp:AuthnRequest>
Exemplo de resposta de AuthN
<samlp:Response Destination="https://sp.auth-staging.adobe.com/sp/saml/SAMLAssertionConsumer"
ID="_1d39be60-66de-012f-bfd5-0030488a31a4"
InResponseTo="_4cb70308-b445-462e-b044-f7d0323dde0c"
IssueInstant="2012-04-12T15:00:06Z"
Version="2.0"
xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" >
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">ISSUER_VALUE</saml:Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<saml:Assertion ID="_1d39c280-66de-012f-bfd6-0030488a31a4"
IssueInstant="2012-04-12T15:00:06Z"
Version="2.0"
xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" >
<saml:Issuer>ISSUER_VALUE</saml:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
...........
</ds:Signature>
<saml:Subject>
<saml:NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
NameQualifier="IDP_NameQualifier"
SPNameQualifier="https://saml.sp.auth-staging.adobe.com">
oRD6ALr5jlzkofNR1OaSCDbC6GaXV1cq8gF7Eotf
</saml:NameID>
<saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml:SubjectConfirmationData
InResponseTo="_4cb70308-b445-462e-b044-f7d0323dde0c"
NotOnOrAfter="2012-04-12T15:10:06Z"
Recipient="https://sp.auth-staging.adobe.com/sp/saml/SAMLAssertionConsumer" />
</saml:SubjectConfirmation>
</saml:Subject>
<saml:Conditions NotBefore="2012-04-12T15:00:06Z"
NotOnOrAfter="2012-04-12T15:10:06Z">
<saml:AudienceRestriction>
<saml:Audience>https://saml.sp.auth-staging.adobe.com</saml:Audience>
</saml:AudienceRestriction>
</saml:Conditions>
<saml:AuthnStatement AuthnInstant="2012-04-12T15:00:06Z"
SessionIndex="f6d15540cf27966115028d35c94eefb9" >
<saml:AuthnContext>
<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport
</saml:AuthnContextClassRef>
</saml:AuthnContext>
</saml:AuthnStatement>
</saml:Assertion>
</samlp:Response>
Autorização authz-proxy-mvpd-saml-int
Para a parte de autorização, o MVPD precisaria aceitar para autorização o recurso especificado pelo Programador. Na maioria dos casos, esse é um identificador de sequência para a rede de canal, como TBS ou TNT.
Solicitação e resposta de SAML de autorização authz-saml-req-resp
Na resposta AuthZ, o ISSUER deve corresponder ao ISSUER da Resposta SAML, que deve ser o identificador MVPD com proxy.
Solicitação XACML de AuthZ de Exemplo
<?xml version="1.0" encoding="UTF-8"?>
<soap11:Envelope xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/">
<soap11:Header/>
<soap11:Body>
<xacml-samlp:XACMLAuthzDecisionQuery
xmlns:xacml-samlp="urn:oasis:names:tc:xacml:2.0:profile:saml2.0:v2:schema:protocol"
ID="_c2346a8f2c9cfb205b6b8bf12c2db4d0" IssueInstant="2012-04-12T15:07:51.280Z" Version="2.0">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">https://saml.sp.auth-staging.adobe.com
</saml:Issuer>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#_c2346a8f2c9cfb205b6b8bf12c2db4d0">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<ec:InclusiveNamespaces xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"
PrefixList="ds saml xacml-context xacml-samlp"/>
</ds:Transform>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>GmEkSZI+SDS1i4vV2ApGh0mx1X4=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>..........</ds:SignatureValue>
</ds:Signature>
<xacml-context:Request xmlns:xacml-context="urn:oasis:names:tc:xacml:2.0:context:schema:os">
<xacml-context:Subject
SubjectCategory="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
<xacml-context:Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
DataType="http://www.w3.org/2001/XMLSchema#string">
<xacml-context:AttributeValue
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xacml-context:AttributeValueType">
oRD6ALr5jlzkofNR1OaSCDbC6GaXV1cq8gF7Eotf
</xacml-context:AttributeValue>
</xacml-context:Attribute>
</xacml-context:Subject>
<xacml-context:Resource>
<xacml-context:Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
DataType="http://www.w3.org/2001/XMLSchema#string">
<xacml-context:AttributeValue
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xacml-context:AttributeValueType">TBS
</xacml-context:AttributeValue>
</xacml-context:Attribute>
</xacml-context:Resource>
<xacml-context:Action>
<xacml-context:Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id"
DataType="http://www.w3.org/2001/XMLSchema#string">
<xacml-context:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xacml-context:AttributeValueType">VIEW
</xacml-context:AttributeValue>
</xacml-context:Attribute>
</xacml-context:Action>
<xacml-context:Environment>
<xacml-context:Attribute
AttributeId="urn:oasis:names:tc:xacml:1.0:subject:authn-locality:ip-address"
DataType="urn:oasis:names:tc:xacml:2.0:data-type:ipAddress">
<xacml-context:AttributeValue
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:type="xacml-context:AttributeValueType">127.0.0.1
</xacml-context:AttributeValue>
</xacml-context:Attribute>
</xacml-context:Environment>
</xacml-context:Request>
</xacml-samlp:XACMLAuthzDecisionQuery>
</soap11:Body>
</soap11:Envelope>
Resposta AuthZ XACML de Exemplo (Autorização Concedida)
<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Body>
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="_311fa030-66df-012f-bfd7-0030488a31a4"
IssueInstant="2012-04-12T15:07:49Z" Version="2.0">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">ISSUER</saml:Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#_311fa030-66df-012f-bfd7-0030488a31a4">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>2+fDBPYnOT1w5dufJZoVsgckRkM=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>..........</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>.........</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
<xacml-samlp:Assertion xmlns:xacml-samlp="urn:oasis:names:tc:SAML:2.0:assertion"
ID="_311fa5a0-66df-012f-bfd8-0030488a31a4" IssueInstant="2012-04-12T15:07:49Z"
Version="2.0">
<xacml-samlp:Issuer>ISSUER</xacml-samlp:Issuer>
<xacml-samlp:Conditions NotBefore="2012-04-12T15:07:49Z" NotOnOrAfter="2012-04-13T15:07:49Z">
<xacml-samlp:AudienceRestriction>
<xacml-samlp:Audience>https://saml.sp.auth-staging.adobe.com</xacml-samlp:Audience>
</xacml-samlp:AudienceRestriction>
</xacml-samlp:Conditions>
<xacml-saml:XACMLAuthzDecisionStatement
xmlns:xacml-saml="urn:oasis:names:tc:xacml:2.0:profile:saml2.0:v2:schema:assertion"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xacml-context:Response xmlns:xacml-context="urn:oasis:names:tc:xacml:2.0:context:schema:os">
<xacml-context:Result ResourceId="TBS">
<xacml-context:Decision>Permit</xacml-context:Decision>
</xacml-context:Result>
</xacml-context:Response>
</xacml-saml:XACMLAuthzDecisionStatement>
</xacml-samlp:Assertion>
</samlp:Response>
</soap-env:Body>
</soap-env:Envelope>
Resposta AuthZ XACML de Exemplo (Autorização Negada)
<?xml version="1.0" encoding="UTF-8"?>
<soap-env:Envelope xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Body>
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" ID="_69ed8d80-66df-012f-bfda-0030488a31a4"
IssueInstant="2012-04-12T15:09:24Z" Version="2.0">
<saml:Issuer xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">ISSUER</saml:Issuer>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#_69ed8d80-66df-012f-bfda-0030488a31a4">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>2SXNFA4pb/283wq5FVQdp4Ms5SQ=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>........</ds:SignatureValue>
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>........</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
</ds:Signature>
<xacml-samlp:Assertion xmlns:xacml-samlp="urn:oasis:names:tc:SAML:2.0:assertion"
ID="_69ed91e0-66df-012f-bfdb-0030488a31a4" IssueInstant="2012-04-12T15:09:24Z"
Version="2.0">
<xacml-samlp:Issuer>ISSUER</xacml-samlp:Issuer>
<xacml-samlp:Conditions NotBefore="2012-04-12T15:09:24Z" NotOnOrAfter="2012-04-13T15:09:24Z">
<xacml-samlp:AudienceRestriction>
<xacml-samlp:Audience>https://saml.sp.auth-staging.adobe.com</xacml-samlp:Audience>
</xacml-samlp:AudienceRestriction>
</xacml-samlp:Conditions>
<xacml-saml:XACMLAuthzDecisionStatement
xmlns:xacml-saml="urn:oasis:names:tc:xacml:2.0:profile:saml2.0:v2:schema:assertion"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xacml-context:Response xmlns:xacml-context="urn:oasis:names:tc:xacml:2.0:context:schema:os">
<xacml-context:Result ResourceId="NOT_Authorized_Resouce">
<xacml-context:Decision>Deny</xacml-context:Decision>
</xacml-context:Result>
</xacml-context:Response>
</xacml-saml:XACMLAuthzDecisionStatement>
</xacml-samlp:Assertion>
</samlp:Response>
</soap-env:Body>
</soap-env:Envelope>