Azure Portal: API Management check client certificates The Next CEO of Stack OverflowAccessing Windows Azure Service Management API using Windows Live IDHow do I deploy a certificate to the Trusted People store in Azure?Azure API Management and HMACImport public certificate to Azure WebsiteSecuring WebApi in Azure Api ManagementAzure API Managment - Configure operations through Codemanage developer portal content via APIWhy a PFX file is required for Client Authentication in Azure API Management for external consumer?AAD in Azure API Management, avoid signup dialogHow do I secure Azure API Management APIs using Azure B2C

Make solar eclipses exceedingly rare, but still have new moons

What did we know about the Kessel run before the prequels?

What connection does MS Office have to Netscape Navigator?

Is there a difference between "Fahrstuhl" and "Aufzug"

Is it my responsibility to learn a new technology in my own time my employer wants to implement?

Would a completely good Muggle be able to use a wand?

Is there a way to save my career from absolute disaster?

How to invert MapIndexed on a ragged structure? How to construct a tree from rules?

Easy to read palindrome checker

Should I tutor a student who I know has cheated on their homework?

Why do remote US companies require working in the US?

Why does standard notation not preserve intervals (visually)

Legal workarounds for testamentary trust perceived as unfair

Is a distribution that is normal, but highly skewed considered Gaussian?

How did people program for Consoles with multiple CPUs?

Reference request: Grassmannian and Plucker coordinates in type B, C, D

Why did CATV standarize in 75 ohms and everyone else in 50?

Can this equation be simplified further?

Why didn't Khan get resurrected in the Genesis Explosion?

Method for adding error messages to a dictionary given a key

Is wanting to ask what to write an indication that you need to change your story?

Does soap repel water?

Is it convenient to ask the journal's editor for two additional days to complete a review?

How to delete every two lines after 3rd lines in a file contains very large number of lines?



Azure Portal: API Management check client certificates



The Next CEO of Stack OverflowAccessing Windows Azure Service Management API using Windows Live IDHow do I deploy a certificate to the Trusted People store in Azure?Azure API Management and HMACImport public certificate to Azure WebsiteSecuring WebApi in Azure Api ManagementAzure API Managment - Configure operations through Codemanage developer portal content via APIWhy a PFX file is required for Client Authentication in Azure API Management for external consumer?AAD in Azure API Management, avoid signup dialogHow do I secure Azure API Management APIs using Azure B2C










0















Is it possible to check a client certificate, that is sent with a GET https API call, against the certificates that are in the API Manager client certificate store?



In the Azure portal, it is only possible to upload client certificates with a private key and password.
Clients however, will never send the private key part of their certificate with their password.



Azure gives an error when I try to upload a client certificate with only the public key.



According to the Azure Portal API Management documentation, it should be possible:
https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-mutual-certificates-for-clients










share|improve this question


























    0















    Is it possible to check a client certificate, that is sent with a GET https API call, against the certificates that are in the API Manager client certificate store?



    In the Azure portal, it is only possible to upload client certificates with a private key and password.
    Clients however, will never send the private key part of their certificate with their password.



    Azure gives an error when I try to upload a client certificate with only the public key.



    According to the Azure Portal API Management documentation, it should be possible:
    https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-mutual-certificates-for-clients










    share|improve this question
























      0












      0








      0








      Is it possible to check a client certificate, that is sent with a GET https API call, against the certificates that are in the API Manager client certificate store?



      In the Azure portal, it is only possible to upload client certificates with a private key and password.
      Clients however, will never send the private key part of their certificate with their password.



      Azure gives an error when I try to upload a client certificate with only the public key.



      According to the Azure Portal API Management documentation, it should be possible:
      https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-mutual-certificates-for-clients










      share|improve this question














      Is it possible to check a client certificate, that is sent with a GET https API call, against the certificates that are in the API Manager client certificate store?



      In the Azure portal, it is only possible to upload client certificates with a private key and password.
      Clients however, will never send the private key part of their certificate with their password.



      Azure gives an error when I try to upload a client certificate with only the public key.



      According to the Azure Portal API Management documentation, it should be possible:
      https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-mutual-certificates-for-clients







      azure api certificate azure-api-management azureportal






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Mar 7 at 16:52









      Koen GoovaertsKoen Goovaerts

      413




      413






















          2 Answers
          2






          active

          oldest

          votes


















          1














          Those two things are separate features. You upload client certificates (pfx with private key) into APIM when you want to use that certificate to authenticate calls APIM makes to backend.



          If you want to validate certificate client sends to APIM you can go very simple with just checking, say, thumbprint of context.Request.ClientCertificates in choose policy, or you can call Verify or VerifyNoRevocation on a certificate if it has complete chain. You can upload own CA certificates into APIM to make it so.






          share|improve this answer






























            1














            it's currently not possible to upload a client certificate with just a public key.



            You can verify the client certificate used to call your API using a custom policy (as indicated in the link that you provided), checking the certificate thumbprint, for example (so no need to actually upload any certificate).



            e.g. like this:



            <policies>
            <inbound>
            <base />
            <choose>
            <when condition="@(context.Request.Certificate == null || context.Request.Certificate.Thumbprint != "F81E3171FA085BC04C83B6644B9F229F0CBA8E57")">
            <return-response>
            <set-status code="403" reason="Invalid client certificate" />
            </return-response>
            </when>
            </choose>
            </inbound>
            <backend>
            <base />
            </backend>
            <outbound>
            <base />
            </outbound>
            <on-error>
            <base />
            </on-error>
            </policies>





            share|improve this answer























              Your Answer






              StackExchange.ifUsing("editor", function ()
              StackExchange.using("externalEditor", function ()
              StackExchange.using("snippets", function ()
              StackExchange.snippets.init();
              );
              );
              , "code-snippets");

              StackExchange.ready(function()
              var channelOptions =
              tags: "".split(" "),
              id: "1"
              ;
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function()
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled)
              StackExchange.using("snippets", function()
              createEditor();
              );

              else
              createEditor();

              );

              function createEditor()
              StackExchange.prepareEditor(
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: true,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: 10,
              bindNavPrevention: true,
              postfix: "",
              imageUploader:
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              ,
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              );



              );













              draft saved

              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55049034%2fazure-portal-api-management-check-client-certificates%23new-answer', 'question_page');

              );

              Post as a guest















              Required, but never shown

























              2 Answers
              2






              active

              oldest

              votes








              2 Answers
              2






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              1














              Those two things are separate features. You upload client certificates (pfx with private key) into APIM when you want to use that certificate to authenticate calls APIM makes to backend.



              If you want to validate certificate client sends to APIM you can go very simple with just checking, say, thumbprint of context.Request.ClientCertificates in choose policy, or you can call Verify or VerifyNoRevocation on a certificate if it has complete chain. You can upload own CA certificates into APIM to make it so.






              share|improve this answer



























                1














                Those two things are separate features. You upload client certificates (pfx with private key) into APIM when you want to use that certificate to authenticate calls APIM makes to backend.



                If you want to validate certificate client sends to APIM you can go very simple with just checking, say, thumbprint of context.Request.ClientCertificates in choose policy, or you can call Verify or VerifyNoRevocation on a certificate if it has complete chain. You can upload own CA certificates into APIM to make it so.






                share|improve this answer

























                  1












                  1








                  1







                  Those two things are separate features. You upload client certificates (pfx with private key) into APIM when you want to use that certificate to authenticate calls APIM makes to backend.



                  If you want to validate certificate client sends to APIM you can go very simple with just checking, say, thumbprint of context.Request.ClientCertificates in choose policy, or you can call Verify or VerifyNoRevocation on a certificate if it has complete chain. You can upload own CA certificates into APIM to make it so.






                  share|improve this answer













                  Those two things are separate features. You upload client certificates (pfx with private key) into APIM when you want to use that certificate to authenticate calls APIM makes to backend.



                  If you want to validate certificate client sends to APIM you can go very simple with just checking, say, thumbprint of context.Request.ClientCertificates in choose policy, or you can call Verify or VerifyNoRevocation on a certificate if it has complete chain. You can upload own CA certificates into APIM to make it so.







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Mar 8 at 19:10









                  Vitaliy KurokhtinVitaliy Kurokhtin

                  2,7671109




                  2,7671109























                      1














                      it's currently not possible to upload a client certificate with just a public key.



                      You can verify the client certificate used to call your API using a custom policy (as indicated in the link that you provided), checking the certificate thumbprint, for example (so no need to actually upload any certificate).



                      e.g. like this:



                      <policies>
                      <inbound>
                      <base />
                      <choose>
                      <when condition="@(context.Request.Certificate == null || context.Request.Certificate.Thumbprint != "F81E3171FA085BC04C83B6644B9F229F0CBA8E57")">
                      <return-response>
                      <set-status code="403" reason="Invalid client certificate" />
                      </return-response>
                      </when>
                      </choose>
                      </inbound>
                      <backend>
                      <base />
                      </backend>
                      <outbound>
                      <base />
                      </outbound>
                      <on-error>
                      <base />
                      </on-error>
                      </policies>





                      share|improve this answer



























                        1














                        it's currently not possible to upload a client certificate with just a public key.



                        You can verify the client certificate used to call your API using a custom policy (as indicated in the link that you provided), checking the certificate thumbprint, for example (so no need to actually upload any certificate).



                        e.g. like this:



                        <policies>
                        <inbound>
                        <base />
                        <choose>
                        <when condition="@(context.Request.Certificate == null || context.Request.Certificate.Thumbprint != "F81E3171FA085BC04C83B6644B9F229F0CBA8E57")">
                        <return-response>
                        <set-status code="403" reason="Invalid client certificate" />
                        </return-response>
                        </when>
                        </choose>
                        </inbound>
                        <backend>
                        <base />
                        </backend>
                        <outbound>
                        <base />
                        </outbound>
                        <on-error>
                        <base />
                        </on-error>
                        </policies>





                        share|improve this answer

























                          1












                          1








                          1







                          it's currently not possible to upload a client certificate with just a public key.



                          You can verify the client certificate used to call your API using a custom policy (as indicated in the link that you provided), checking the certificate thumbprint, for example (so no need to actually upload any certificate).



                          e.g. like this:



                          <policies>
                          <inbound>
                          <base />
                          <choose>
                          <when condition="@(context.Request.Certificate == null || context.Request.Certificate.Thumbprint != "F81E3171FA085BC04C83B6644B9F229F0CBA8E57")">
                          <return-response>
                          <set-status code="403" reason="Invalid client certificate" />
                          </return-response>
                          </when>
                          </choose>
                          </inbound>
                          <backend>
                          <base />
                          </backend>
                          <outbound>
                          <base />
                          </outbound>
                          <on-error>
                          <base />
                          </on-error>
                          </policies>





                          share|improve this answer













                          it's currently not possible to upload a client certificate with just a public key.



                          You can verify the client certificate used to call your API using a custom policy (as indicated in the link that you provided), checking the certificate thumbprint, for example (so no need to actually upload any certificate).



                          e.g. like this:



                          <policies>
                          <inbound>
                          <base />
                          <choose>
                          <when condition="@(context.Request.Certificate == null || context.Request.Certificate.Thumbprint != "F81E3171FA085BC04C83B6644B9F229F0CBA8E57")">
                          <return-response>
                          <set-status code="403" reason="Invalid client certificate" />
                          </return-response>
                          </when>
                          </choose>
                          </inbound>
                          <backend>
                          <base />
                          </backend>
                          <outbound>
                          <base />
                          </outbound>
                          <on-error>
                          <base />
                          </on-error>
                          </policies>






                          share|improve this answer












                          share|improve this answer



                          share|improve this answer










                          answered Mar 27 at 3:21









                          JamesJames

                          112




                          112



























                              draft saved

                              draft discarded
















































                              Thanks for contributing an answer to Stack Overflow!


                              • Please be sure to answer the question. Provide details and share your research!

                              But avoid


                              • Asking for help, clarification, or responding to other answers.

                              • Making statements based on opinion; back them up with references or personal experience.

                              To learn more, see our tips on writing great answers.




                              draft saved


                              draft discarded














                              StackExchange.ready(
                              function ()
                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f55049034%2fazure-portal-api-management-check-client-certificates%23new-answer', 'question_page');

                              );

                              Post as a guest















                              Required, but never shown





















































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown

































                              Required, but never shown














                              Required, but never shown












                              Required, but never shown







                              Required, but never shown







                              Popular posts from this blog

                              Save data to MySQL database using ExtJS and PHP [closed]2019 Community Moderator ElectionHow can I prevent SQL injection in PHP?Which MySQL data type to use for storing boolean valuesPHP: Delete an element from an arrayHow do I connect to a MySQL Database in Python?Should I use the datetime or timestamp data type in MySQL?How to get a list of MySQL user accountsHow Do You Parse and Process HTML/XML in PHP?Reference — What does this symbol mean in PHP?How does PHP 'foreach' actually work?Why shouldn't I use mysql_* functions in PHP?

                              Compiling GNU Global with universal-ctags support Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Data science time! April 2019 and salary with experience The Ask Question Wizard is Live!Tags for Emacs: Relationship between etags, ebrowse, cscope, GNU Global and exuberant ctagsVim and Ctags tips and trickscscope or ctags why choose one over the other?scons and ctagsctags cannot open option file “.ctags”Adding tag scopes in universal-ctagsShould I use Universal-ctags?Universal ctags on WindowsHow do I install GNU Global with universal ctags support using Homebrew?Universal ctags with emacsHow to highlight ctags generated by Universal Ctags in Vim?

                              Add ONERROR event to image from jsp tldHow to add an image to a JPanel?Saving image from PHP URLHTML img scalingCheck if an image is loaded (no errors) with jQueryHow to force an <img> to take up width, even if the image is not loadedHow do I populate hidden form field with a value set in Spring ControllerStyling Raw elements Generated from JSP tagds with Jquery MobileLimit resizing of images with explicitly set width and height attributeserror TLD use in a jsp fileJsp tld files cannot be resolved