首页 > 解决方案 > 如何使用 saml 断言获取 MS 图形 API 的授权令牌

问题描述

我们使用sso登录Office365和我们自己的内网。sso 进程返回一个 saml2 断言,该断言可用于我的代码。

我希望使用它来获取授权令牌来访问图形 api。

我已按照此处的说明进行操作:https ://docs.microsoft.com/en-us/azure/active-directory/develop/v2-saml-bearer-assertion

最后我得到一个错误:“AADSTS50107:请求的联合领域对象' https://sts.windows.net/xyzzy/ '不存在。”

我得出的结论是,这是因为我们的 Office365 域是托管的,而不是联合的,并且此流程不适用于托管域(尽管不清楚为什么不这样做)。

我也遵循了这里的说明:https ://docs.microsoft.com/en-us/azure/active-directory/develop/v1-oauth2-on-behalf-of-flow#saml-assertions-obtained-with- an-oauth20-obo 流

最后我得到了一个不同的错误:“AADSTS700001:应用程序:spn:xyzzy 需要选择加入‘aio’可选声明,以便代表流程使用颁发给此应用程序的 SAML 令牌”。这里所指的应用程序是在 SSO 中使用的应用程序,当我们最初获得 saml 断言时(而不是用于获取图 api 的授权令牌的应用程序)。

我不知道如何选择“aio”可选声明。此声明未出现在应用程序配置的列表中。

我将不胜感激在克服这两个错误中的任何一个方面提供的任何帮助,或者任何使我能够使用 saml 断言获得图形 api 授权令牌的替代方法。

我尝试使用的 saml 断言示例:

<Assertion xmlns="urn:oasis:names:tc:SAML:2.0:assertion" ID="_nnnnnnnn-9ed2-4511-8f04-nnnnnnnnn" IssueInstant="2020-01-16T16:12:44.389Z" Version="2.0">
  <Issuer>https://sts.windows.net/nnnnnnnn-187d-415b-87e6-nnnnnnnn8a01/</Issuer>
  <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
    <SignedInfo>
      <CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
      <SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
      <Reference URI="#_nnnnnnnn-9ed2-4511-8f04-nnnnnnnn1800">
        <Transforms>
          <Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
          <Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
        </Transforms>
        <DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
        <DigestValue>mEWbTMcoHmsT1bcWK2/nnnnnnnnm+tpKxEgjXCo7uU=</DigestValue>
      </Reference>
    </SignedInfo>
    <SignatureValue>rEGA7emFjnJhAfUQ24PXcIOPAYBA5RXoj8+MsA2PnXDMMs2NfQkfp7F4n7z5v8PEJevTuqVpCVpSKBUL1pZDcKSs4mQ/gaPyFXD7u7yMyOSSyPDKmYHEVz4COA1JFTzvrQT5KTsNl0wEAIkwZcQKC+uSMr7Uj36bthqnnnnnnnnF8LFopSTayXa2IlxnccY/7zUxs5Sz1ZVCs8cqS81LJV7H2QGbNDJ1FXO9DYFkUdN81h5Ik+tXNhXnVFV/P0GTkX6KRYoVuqzZZQqgSoxsnAb4irKRYSSZ8cXsi9af2b+gIVZGJsdiMz7MLbdV2yLDjokKbNrkwQAO+VaUeZTUA==</SignatureValue>
    <KeyInfo>
      <X509Data>
        <X509Certificate>MIIDBTCCAe2gAwIBAgIQMCJcgWf4l5xPpeoEwB7DKDANBgkqhkiG9w0BAQsFADAtMSswKQYDVQQDEyJhY2NvdW50cynnnnnnnnNjb250cm9sLndpbmRvd3MubmV0MB4XDTE5MTExNTAwMDAwMFoXDTI0MTExNDAwMDAwMFowLTErMCkGA1UEAxMiYWNjb3VudHMuYWNjZXNzY29udHJvbC53aW5kb3dzLm5ldDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANF4YcKZhKTfowwWqZ84RW7bxFNgaSy3Gi85V5uJpU9jMCmZV0VFGptryNFEQ1GESmmuDutgQlkkhjr9ixkOrTA+aFPg6pLn+OG6NYS7nyKgAC1MprLH0bq06y3dH6lQPWQhd3wPP+8UIua9+9JuIfhu9Xs/HhN5cYlT5cEniV0aWuUMxgPAKcG1xolfupYhlOHjFwVN/QOaxcuk3YqGguD+sZ7PiHcJSzFnTkdvD+DtMoW1U6nDf5FuDeAEKJ7JQf7RjiRoViYxZHKrEPHG4iZ+kOhV6DQA16ISTt7ALXVB8gTTF3OvItubk2E3v6sgirgtvdE5Mkd4MTJcO67bgdUCAwEAAaMhMB8wHQYDVR0OBBYEFEXiTeLGkA2LgAjQOrT2KChpgwCgMA0GCSqGSIb3DQEBCwUAA4IBAQA6GqtYZDQzym0yxfL2NnlSbJP/lLhSQOqbPBdN6DWQ/3duk+e08Ix5qy63hzW+qQR0PAkFEcooL5+bdheS66tFJpVejEcqCSKUVvwOUe6GY/ju752dlB7anBB9An362khehCxqydYNS5Igl0rtcP7dKC3ZBn1m2B9ULsyx46iNpfHQHHv9NKU2vVq2CtNc95CFktwjUwlyWMgbfI/DzPX/nnnnnnnnsuVVBO7+jIaBmi0XGqudooZkqgIrvnfNMM13Gy78TUNHsCiAQEwZ/L17yNbzotNGxAoPfuXldbD52MQNOsA7WhH+j8qFWY6gZzTN4NpVtuW4m04TCEFexnTz</X509Certificate>
      </X509Data>
    </KeyInfo>
  </Signature>
  <Subject>
    <NameID Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent">nnnnnnnnavitA3FPq9Bqtu6d3UlysiFOxjMX_je3u-k</NameID>
    <SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer"/>
  </Subject>
  <Conditions NotBefore="2020-01-16T16:07:44.248Z" NotOnOrAfter="2020-01-16T17:12:44.248Z">
    <AudienceRestriction>
      <Audience>spn:nnnnnnnn-900b-4a82-b65f-3975nnnnnnnn</Audience>
    </AudienceRestriction>
  </Conditions>
  <AttributeStatement>
    <Attribute Name="http://schemas.microsoft.com/identity/claims/tenantid">
      <AttributeValue>nnnnnnnn-187d-415b-87e6-295ennnnnnnn</AttributeValue>
    </Attribute>
    <Attribute Name="http://schemas.microsoft.com/identity/claims/objectidentifier">
      <AttributeValue>nnnnnnnn-2111-48e1-ac4b-726nnnnnnnn</AttributeValue>
    </Attribute>
    <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name">
      <AttributeValue>nnnnnn.nnnnnn@nn.nnng</AttributeValue>
    </Attribute>
    <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname">
      <AttributeValue>nnnnnn</AttributeValue>
    </Attribute>
    <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname">
      <AttributeValue>nnnnn</AttributeValue>
    </Attribute>
    <Attribute Name="http://schemas.microsoft.com/identity/claims/displayname">
      <AttributeValue>nnnnnnnnnnnnnnnnn</AttributeValue>
    </Attribute>
    <Attribute Name="http://schemas.microsoft.com/identity/claims/identityprovider">
      <AttributeValue>https://sts.windows.net/nnnnnnnn-187d-415b-87e6-295e9nnnnnnnn/</AttributeValue>
    </Attribute>
    <Attribute Name="http://schemas.microsoft.com/claims/authnmethodsreferences">
      <AttributeValue>http://schemas.microsoft.com/ws/2008/06/identity/authenticationmethod/password</AttributeValue>
    </Attribute>
  </AttributeStatement>
  <AuthnStatement AuthnInstant="2020-01-14T15:47:10.396Z">
    <AuthnContext>
      <AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</AuthnContextClassRef>
    </AuthnContext>
  </AuthnStatement>
</Assertion>

标签: azure-active-directorymicrosoft-graph-apisamlbearer-token

解决方案


推荐阅读