Re: [Architecture] [APIM] Supporting 3rd Party Key Manager Integrations at API Gateway
Was checking on both the mails. :) On Fri, Mar 8, 2019 at 3:49 AM Johann Nallathamby wrote: > @Harsha Kumara did they give you too much wine in the > plane ? > > On Fri, Mar 8, 2019 at 2:18 PM Harsha Kumara wrote: > >> Please ignore my previous reply. >> >> On Fri, Mar 8, 2019 at 3:45 AM Nuwan Dias wrote: >> >>> I don't think we need to complicate this anymore. We all know the >>> downsides of having too many options to do the same thing in >>> slightly different ways. >>> >>> The reason you're seeing this as "Gateway" AND "Key Manager" is because >>> you are thinking in terms of profiles. But if you look at it from a single >>> product point of view what we simply have is API Manager integration with >>> third part IDP. When someone implements the interfaces they are simply >>> implementing API Manager interfaces not Gateway interfaces nor Key Manager >>> interfaces. So even if someone wants to do a subscription validation at the >>> point of validating the token they simply have to implement the relevant >>> interface method and deploy on the gateway itself. There's no need to >>> deploy additional nodes or anything like that just because this code is >>> executed on the Key Manager profile. The only downside of this approach is >>> that you would need to run the gateway in the default profile. Which I >>> think is a good trade off rather than complicating the product than it >>> already is. >>> >>> Thanks, >>> NuwanD. >>> >>> On Fri, Mar 8, 2019 at 1:56 PM Johann Nallathamby >>> wrote: >>> Hi Nuwan, On Thu, Mar 7, 2019 at 2:09 PM Nuwan Dias wrote: > There are several reasons. > > 1) It is not just the gateway but also the store that needs to > communicate with the IDP. So the integration point cannot be the gateway > alone. > Correct. So when we do integrations in the current model we have, do we not need to integrate the API store with the 3rd party key manager? Are you saying the API store works as it is with our key manager, and the key manager extension takes care of all integrations with the 3rd party? As a percentage how many percent of times we needed to customize the API store for 3rd party integrations? Can you give some examples of when we needed to customize the API store? One use case I came across was to integrate multiple key managers to the API store. In that case I believe we need to customize the store. Or may be still there is some way you can hide the number of 3rd party key managers, from the WSO2 key manager interface? > 2) Most customers sill want to validate the subscription in addition > to validating the token. The IDP will validate the token but APIM will > have > to validate the subscription. The gateway cannot validate the subscription > directly since it requires access to the DB on which this data is stored. > Ok. This is a good point. So I understand to cater this we need to go through our key manager. Just a thought. Can we give 2 options here: 1. For customers who want to validate subscription they can proxy only the validation call through our key manager. 2. For customers who don't want to validate subscriptions they can directly call the 3rd party key manager. This percentage could be quite low as I understand. May be there is no code changes required here. But it could be our guideline. What do you think? I haven't done a key manager extension myself. But as far as the runtime validation extension goes, what I understand is that it should be simple as one API call. The gateway calls the WSO2 key manager's validation API, which internally calls the 3rd party key manager's introspection API, gets the response, validates it, validates the subscription in the database, and returns validation response to gateway. Correct? I will check on the 3rd party key manager extension sample and get back if I find anything more complicated than this. > 3) Scopes are also not always supported by all IDPs and even when they > do only very few IDPs can map a resource against a scope. While standard > IDPs support introspection of tokens there is no such standard for > validating whether a given token bears the required scope to access a > resource. Therefore we again need to perform this validation on APIM. And > in order to do that you again have to get access to the storage where this > information is stored. The gateway in most cases doesn't have access to > the > storage layer of APIM. > Ok. So this also should be covered by the validation call to the key manager in option 1 above. We can also add scope validation to our guideline of when to propose key manager extension. Thanks & Regards, Johann. > > On Thu, Mar 7, 2019 at
Re: [Architecture] [APIM] Supporting 3rd Party Key Manager Integrations at API Gateway
@Harsha Kumara did they give you too much wine in the plane ? On Fri, Mar 8, 2019 at 2:18 PM Harsha Kumara wrote: > Please ignore my previous reply. > > On Fri, Mar 8, 2019 at 3:45 AM Nuwan Dias wrote: > >> I don't think we need to complicate this anymore. We all know the >> downsides of having too many options to do the same thing in >> slightly different ways. >> >> The reason you're seeing this as "Gateway" AND "Key Manager" is because >> you are thinking in terms of profiles. But if you look at it from a single >> product point of view what we simply have is API Manager integration with >> third part IDP. When someone implements the interfaces they are simply >> implementing API Manager interfaces not Gateway interfaces nor Key Manager >> interfaces. So even if someone wants to do a subscription validation at the >> point of validating the token they simply have to implement the relevant >> interface method and deploy on the gateway itself. There's no need to >> deploy additional nodes or anything like that just because this code is >> executed on the Key Manager profile. The only downside of this approach is >> that you would need to run the gateway in the default profile. Which I >> think is a good trade off rather than complicating the product than it >> already is. >> >> Thanks, >> NuwanD. >> >> On Fri, Mar 8, 2019 at 1:56 PM Johann Nallathamby >> wrote: >> >>> Hi Nuwan, >>> >>> On Thu, Mar 7, 2019 at 2:09 PM Nuwan Dias wrote: >>> There are several reasons. 1) It is not just the gateway but also the store that needs to communicate with the IDP. So the integration point cannot be the gateway alone. >>> >>> Correct. So when we do integrations in the current model we have, do we >>> not need to integrate the API store with the 3rd party key manager? Are you >>> saying the API store works as it is with our key manager, and the key >>> manager extension takes care of all integrations with the 3rd party? As a >>> percentage how many percent of times we needed to customize the API store >>> for 3rd party integrations? Can you give some examples of when we needed to >>> customize the API store? >>> >>> One use case I came across was to integrate multiple key managers to the >>> API store. In that case I believe we need to customize the store. Or may be >>> still there is some way you can hide the number of 3rd party key managers, >>> from the WSO2 key manager interface? >>> >>> 2) Most customers sill want to validate the subscription in addition to validating the token. The IDP will validate the token but APIM will have to validate the subscription. The gateway cannot validate the subscription directly since it requires access to the DB on which this data is stored. >>> >>> Ok. This is a good point. So I understand to cater this we need to go >>> through our key manager. >>> Just a thought. Can we give 2 options here: >>> 1. For customers who want to validate subscription they can proxy only >>> the validation call through our key manager. >>> 2. For customers who don't want to validate subscriptions they can >>> directly call the 3rd party key manager. This percentage could be quite low >>> as I understand. >>> May be there is no code changes required here. But it could be our >>> guideline. What do you think? >>> >>> I haven't done a key manager extension myself. But as far as the runtime >>> validation extension goes, what I understand is that it should be simple as >>> one API call. The gateway calls the WSO2 key manager's validation API, >>> which internally calls the 3rd party key manager's introspection API, gets >>> the response, validates it, validates the subscription in the database, and >>> returns validation response to gateway. Correct? >>> I will check on the 3rd party key manager extension sample and get back >>> if I find anything more complicated than this. >>> >>> >>> 3) Scopes are also not always supported by all IDPs and even when they do only very few IDPs can map a resource against a scope. While standard IDPs support introspection of tokens there is no such standard for validating whether a given token bears the required scope to access a resource. Therefore we again need to perform this validation on APIM. And in order to do that you again have to get access to the storage where this information is stored. The gateway in most cases doesn't have access to the storage layer of APIM. >>> >>> Ok. So this also should be covered by the validation call to the key >>> manager in option 1 above. We can also add scope validation to our >>> guideline of when to propose key manager extension. >>> >>> Thanks & Regards, >>> Johann. >>> >>> On Thu, Mar 7, 2019 at 12:54 AM Johann Nallathamby wrote: > APIM Team, > > I would like to understand what was the original reason we went with a > 3rd party key manager extension in our key manager component, rather
Re: [Architecture] [APIM] Supporting 3rd Party Key Manager Integrations at API Gateway
Please ignore my previous reply. On Fri, Mar 8, 2019 at 3:45 AM Nuwan Dias wrote: > I don't think we need to complicate this anymore. We all know the > downsides of having too many options to do the same thing in > slightly different ways. > > The reason you're seeing this as "Gateway" AND "Key Manager" is because > you are thinking in terms of profiles. But if you look at it from a single > product point of view what we simply have is API Manager integration with > third part IDP. When someone implements the interfaces they are simply > implementing API Manager interfaces not Gateway interfaces nor Key Manager > interfaces. So even if someone wants to do a subscription validation at the > point of validating the token they simply have to implement the relevant > interface method and deploy on the gateway itself. There's no need to > deploy additional nodes or anything like that just because this code is > executed on the Key Manager profile. The only downside of this approach is > that you would need to run the gateway in the default profile. Which I > think is a good trade off rather than complicating the product than it > already is. > > Thanks, > NuwanD. > > On Fri, Mar 8, 2019 at 1:56 PM Johann Nallathamby wrote: > >> Hi Nuwan, >> >> On Thu, Mar 7, 2019 at 2:09 PM Nuwan Dias wrote: >> >>> There are several reasons. >>> >>> 1) It is not just the gateway but also the store that needs to >>> communicate with the IDP. So the integration point cannot be the gateway >>> alone. >>> >> >> Correct. So when we do integrations in the current model we have, do we >> not need to integrate the API store with the 3rd party key manager? Are you >> saying the API store works as it is with our key manager, and the key >> manager extension takes care of all integrations with the 3rd party? As a >> percentage how many percent of times we needed to customize the API store >> for 3rd party integrations? Can you give some examples of when we needed to >> customize the API store? >> >> One use case I came across was to integrate multiple key managers to the >> API store. In that case I believe we need to customize the store. Or may be >> still there is some way you can hide the number of 3rd party key managers, >> from the WSO2 key manager interface? >> >> >>> 2) Most customers sill want to validate the subscription in addition to >>> validating the token. The IDP will validate the token but APIM will have to >>> validate the subscription. The gateway cannot validate the subscription >>> directly since it requires access to the DB on which this data is stored. >>> >> >> Ok. This is a good point. So I understand to cater this we need to go >> through our key manager. >> Just a thought. Can we give 2 options here: >> 1. For customers who want to validate subscription they can proxy only >> the validation call through our key manager. >> 2. For customers who don't want to validate subscriptions they can >> directly call the 3rd party key manager. This percentage could be quite low >> as I understand. >> May be there is no code changes required here. But it could be our >> guideline. What do you think? >> >> I haven't done a key manager extension myself. But as far as the runtime >> validation extension goes, what I understand is that it should be simple as >> one API call. The gateway calls the WSO2 key manager's validation API, >> which internally calls the 3rd party key manager's introspection API, gets >> the response, validates it, validates the subscription in the database, and >> returns validation response to gateway. Correct? >> I will check on the 3rd party key manager extension sample and get back >> if I find anything more complicated than this. >> >> >> >>> 3) Scopes are also not always supported by all IDPs and even when they >>> do only very few IDPs can map a resource against a scope. While standard >>> IDPs support introspection of tokens there is no such standard for >>> validating whether a given token bears the required scope to access a >>> resource. Therefore we again need to perform this validation on APIM. And >>> in order to do that you again have to get access to the storage where this >>> information is stored. The gateway in most cases doesn't have access to the >>> storage layer of APIM. >>> >> >> Ok. So this also should be covered by the validation call to the key >> manager in option 1 above. We can also add scope validation to our >> guideline of when to propose key manager extension. >> >> Thanks & Regards, >> Johann. >> >> >>> >>> On Thu, Mar 7, 2019 at 12:54 AM Johann Nallathamby >>> wrote: >>> APIM Team, I would like to understand what was the original reason we went with a 3rd party key manager extension in our key manager component, rather than giving the extensibility to integrate a 3rd party key manager at the gateway itself. What are the problems in supporting 3rd party Key Manager integrations directly from the API Gateway; avoiding the
Re: [Architecture] [APIM] Supporting 3rd Party Key Manager Integrations at API Gateway
@Chamod Samarajeewa can you share current implementation details? Is you basic authentication handler, I assume you calling token endpoint with hard coded consumer key and password. We should be able to support Johann's suggestion with Option 1. On Fri, Mar 8, 2019 at 3:30 AM Harsha Kumara wrote: > > > On Fri, Mar 8, 2019 at 3:26 AM Johann Nallathamby wrote: > >> Hi Nuwan, >> >> On Thu, Mar 7, 2019 at 2:09 PM Nuwan Dias wrote: >> >>> There are several reasons. >>> >>> 1) It is not just the gateway but also the store that needs to >>> communicate with the IDP. So the integration point cannot be the gateway >>> alone. >>> >> >> Correct. So when we do integrations in the current model we have, do we >> not need to integrate the API store with the 3rd party key manager? Are you >> saying the API store works as it is with our key manager, and the key >> manager extension takes care of all integrations with the 3rd party? As a >> percentage how many percent of times we needed to customize the API store >> for 3rd party integrations? Can you give some examples of when we needed to >> customize the API store? >> >> One use case I came across was to integrate multiple key managers to the >> API store. In that case I believe we need to customize the store. Or may be >> still there is some way you can hide the number of 3rd party key managers, >> from the WSO2 key manager interface? >> >> >>> 2) Most customers sill want to validate the subscription in addition to >>> validating the token. The IDP will validate the token but APIM will have to >>> validate the subscription. The gateway cannot validate the subscription >>> directly since it requires access to the DB on which this data is stored. >>> >> >> Ok. This is a good point. So I understand to cater this we need to go >> through our key manager. >> Just a thought. Can we give 2 options here: >> 1. For customers who want to validate subscription they can proxy only >> the validation call through our key manager. >> 2. For customers who don't want to validate subscriptions they can >> directly call the 3rd party key manager. This percentage could be quite low >> as I understand. >> May be there is no code changes required here. But it could be our >> guideline. What do you think? >> >> I haven't done a key manager extension myself. But as far as the runtime >> validation extension goes, what I understand is that it should be simple as >> one API call. The gateway calls the WSO2 key manager's validation API, >> which internally calls the 3rd party key manager's introspection API, gets >> the response, validates it, validates the subscription in the database, and >> returns validation response to gateway. Correct? >> > Yes > >> I will check on the 3rd party key manager extension sample and get back >> if I find anything more complicated than this. >> >> >> >>> 3) Scopes are also not always supported by all IDPs and even when they >>> do only very few IDPs can map a resource against a scope. While standard >>> IDPs support introspection of tokens there is no such standard for >>> validating whether a given token bears the required scope to access a >>> resource. Therefore we again need to perform this validation on APIM. And >>> in order to do that you again have to get access to the storage where this >>> information is stored. The gateway in most cases doesn't have access to the >>> storage layer of APIM. >>> >> >> Ok. So this also should be covered by the validation call to the key >> manager in option 1 above. We can also add scope validation to our >> guideline of when to propose key manager extension. >> >> Thanks & Regards, >> Johann. >> >> >>> >>> On Thu, Mar 7, 2019 at 12:54 AM Johann Nallathamby >>> wrote: >>> APIM Team, I would like to understand what was the original reason we went with a 3rd party key manager extension in our key manager component, rather than giving the extensibility to integrate a 3rd party key manager at the gateway itself. What are the problems in supporting 3rd party Key Manager integrations directly from the API Gateway; avoiding the WSO2 Key Manager at all. We can provide a well designed OAuth2 security handler on the gateway, with template methods to extend and integrate 3rd party KMs? Pros: 1. Taking advantage of standards such as OAuth2/OpenID Connect which are supported by many vendors already, will reduce developer effort to understand protocols, will reduce development time and increase reusability. I feel like we are just complicating the process by going through a constricted API layer. 2. Higher level SPIs like handlers in the gateway are much easier to understand and more people have worked with those SPIs already for other purposes. 3. It gives you more flexibility to integrate with key manager, because there is more contextual information available in gateway. E.g. recently in a customer
Re: [Architecture] [APIM] Supporting 3rd Party Key Manager Integrations at API Gateway
I don't think we need to complicate this anymore. We all know the downsides of having too many options to do the same thing in slightly different ways. The reason you're seeing this as "Gateway" AND "Key Manager" is because you are thinking in terms of profiles. But if you look at it from a single product point of view what we simply have is API Manager integration with third part IDP. When someone implements the interfaces they are simply implementing API Manager interfaces not Gateway interfaces nor Key Manager interfaces. So even if someone wants to do a subscription validation at the point of validating the token they simply have to implement the relevant interface method and deploy on the gateway itself. There's no need to deploy additional nodes or anything like that just because this code is executed on the Key Manager profile. The only downside of this approach is that you would need to run the gateway in the default profile. Which I think is a good trade off rather than complicating the product than it already is. Thanks, NuwanD. On Fri, Mar 8, 2019 at 1:56 PM Johann Nallathamby wrote: > Hi Nuwan, > > On Thu, Mar 7, 2019 at 2:09 PM Nuwan Dias wrote: > >> There are several reasons. >> >> 1) It is not just the gateway but also the store that needs to >> communicate with the IDP. So the integration point cannot be the gateway >> alone. >> > > Correct. So when we do integrations in the current model we have, do we > not need to integrate the API store with the 3rd party key manager? Are you > saying the API store works as it is with our key manager, and the key > manager extension takes care of all integrations with the 3rd party? As a > percentage how many percent of times we needed to customize the API store > for 3rd party integrations? Can you give some examples of when we needed to > customize the API store? > > One use case I came across was to integrate multiple key managers to the > API store. In that case I believe we need to customize the store. Or may be > still there is some way you can hide the number of 3rd party key managers, > from the WSO2 key manager interface? > > >> 2) Most customers sill want to validate the subscription in addition to >> validating the token. The IDP will validate the token but APIM will have to >> validate the subscription. The gateway cannot validate the subscription >> directly since it requires access to the DB on which this data is stored. >> > > Ok. This is a good point. So I understand to cater this we need to go > through our key manager. > Just a thought. Can we give 2 options here: > 1. For customers who want to validate subscription they can proxy only the > validation call through our key manager. > 2. For customers who don't want to validate subscriptions they can > directly call the 3rd party key manager. This percentage could be quite low > as I understand. > May be there is no code changes required here. But it could be our > guideline. What do you think? > > I haven't done a key manager extension myself. But as far as the runtime > validation extension goes, what I understand is that it should be simple as > one API call. The gateway calls the WSO2 key manager's validation API, > which internally calls the 3rd party key manager's introspection API, gets > the response, validates it, validates the subscription in the database, and > returns validation response to gateway. Correct? > I will check on the 3rd party key manager extension sample and get back if > I find anything more complicated than this. > > > >> 3) Scopes are also not always supported by all IDPs and even when they do >> only very few IDPs can map a resource against a scope. While standard IDPs >> support introspection of tokens there is no such standard for validating >> whether a given token bears the required scope to access a resource. >> Therefore we again need to perform this validation on APIM. And in order to >> do that you again have to get access to the storage where this information >> is stored. The gateway in most cases doesn't have access to the storage >> layer of APIM. >> > > Ok. So this also should be covered by the validation call to the key > manager in option 1 above. We can also add scope validation to our > guideline of when to propose key manager extension. > > Thanks & Regards, > Johann. > > >> >> On Thu, Mar 7, 2019 at 12:54 AM Johann Nallathamby >> wrote: >> >>> APIM Team, >>> >>> I would like to understand what was the original reason we went with a >>> 3rd party key manager extension in our key manager component, rather than >>> giving the extensibility to integrate a 3rd party key manager at the >>> gateway itself. >>> >>> What are the problems in supporting 3rd party Key Manager integrations >>> directly from the API Gateway; avoiding the WSO2 Key Manager at all. We can >>> provide a well designed OAuth2 security handler on the gateway, with >>> template methods to extend and integrate 3rd party KMs? >>> >>> Pros: >>> 1. Taking advantage of
Re: [Architecture] [APIM] Supporting 3rd Party Key Manager Integrations at API Gateway
On Fri, Mar 8, 2019 at 3:26 AM Johann Nallathamby wrote: > Hi Nuwan, > > On Thu, Mar 7, 2019 at 2:09 PM Nuwan Dias wrote: > >> There are several reasons. >> >> 1) It is not just the gateway but also the store that needs to >> communicate with the IDP. So the integration point cannot be the gateway >> alone. >> > > Correct. So when we do integrations in the current model we have, do we > not need to integrate the API store with the 3rd party key manager? Are you > saying the API store works as it is with our key manager, and the key > manager extension takes care of all integrations with the 3rd party? As a > percentage how many percent of times we needed to customize the API store > for 3rd party integrations? Can you give some examples of when we needed to > customize the API store? > > One use case I came across was to integrate multiple key managers to the > API store. In that case I believe we need to customize the store. Or may be > still there is some way you can hide the number of 3rd party key managers, > from the WSO2 key manager interface? > > >> 2) Most customers sill want to validate the subscription in addition to >> validating the token. The IDP will validate the token but APIM will have to >> validate the subscription. The gateway cannot validate the subscription >> directly since it requires access to the DB on which this data is stored. >> > > Ok. This is a good point. So I understand to cater this we need to go > through our key manager. > Just a thought. Can we give 2 options here: > 1. For customers who want to validate subscription they can proxy only the > validation call through our key manager. > 2. For customers who don't want to validate subscriptions they can > directly call the 3rd party key manager. This percentage could be quite low > as I understand. > May be there is no code changes required here. But it could be our > guideline. What do you think? > > I haven't done a key manager extension myself. But as far as the runtime > validation extension goes, what I understand is that it should be simple as > one API call. The gateway calls the WSO2 key manager's validation API, > which internally calls the 3rd party key manager's introspection API, gets > the response, validates it, validates the subscription in the database, and > returns validation response to gateway. Correct? > Yes > I will check on the 3rd party key manager extension sample and get back if > I find anything more complicated than this. > > > >> 3) Scopes are also not always supported by all IDPs and even when they do >> only very few IDPs can map a resource against a scope. While standard IDPs >> support introspection of tokens there is no such standard for validating >> whether a given token bears the required scope to access a resource. >> Therefore we again need to perform this validation on APIM. And in order to >> do that you again have to get access to the storage where this information >> is stored. The gateway in most cases doesn't have access to the storage >> layer of APIM. >> > > Ok. So this also should be covered by the validation call to the key > manager in option 1 above. We can also add scope validation to our > guideline of when to propose key manager extension. > > Thanks & Regards, > Johann. > > >> >> On Thu, Mar 7, 2019 at 12:54 AM Johann Nallathamby >> wrote: >> >>> APIM Team, >>> >>> I would like to understand what was the original reason we went with a >>> 3rd party key manager extension in our key manager component, rather than >>> giving the extensibility to integrate a 3rd party key manager at the >>> gateway itself. >>> >>> What are the problems in supporting 3rd party Key Manager integrations >>> directly from the API Gateway; avoiding the WSO2 Key Manager at all. We can >>> provide a well designed OAuth2 security handler on the gateway, with >>> template methods to extend and integrate 3rd party KMs? >>> >>> Pros: >>> 1. Taking advantage of standards such as OAuth2/OpenID Connect which are >>> supported by many vendors already, will reduce developer effort to >>> understand protocols, will reduce development time and increase >>> reusability. I feel like we are just complicating the process by going >>> through a constricted API layer. >>> 2. Higher level SPIs like handlers in the gateway are much easier to >>> understand and more people have worked with those SPIs already for other >>> purposes. >>> 3. It gives you more flexibility to integrate with key manager, because >>> there is more contextual information available in gateway. >>> E.g. recently in a customer engagement I came across the requirement to >>> integrate with multiple 3rd party key managers, based on hostname of the >>> API request, using one gateway handler extension. >>> 4. It is seen as a security vulnerability to share the access tokens and >>> refresh tokens via a 3rd part component in between client and actual token >>> provider. >>> 5. We don't need to have our key manager in the deployment if we can
Re: [Architecture] [APIM] Supporting 3rd Party Key Manager Integrations at API Gateway
Hi Nuwan, On Thu, Mar 7, 2019 at 2:09 PM Nuwan Dias wrote: > There are several reasons. > > 1) It is not just the gateway but also the store that needs to communicate > with the IDP. So the integration point cannot be the gateway alone. > Correct. So when we do integrations in the current model we have, do we not need to integrate the API store with the 3rd party key manager? Are you saying the API store works as it is with our key manager, and the key manager extension takes care of all integrations with the 3rd party? As a percentage how many percent of times we needed to customize the API store for 3rd party integrations? Can you give some examples of when we needed to customize the API store? One use case I came across was to integrate multiple key managers to the API store. In that case I believe we need to customize the store. Or may be still there is some way you can hide the number of 3rd party key managers, from the WSO2 key manager interface? > 2) Most customers sill want to validate the subscription in addition to > validating the token. The IDP will validate the token but APIM will have to > validate the subscription. The gateway cannot validate the subscription > directly since it requires access to the DB on which this data is stored. > Ok. This is a good point. So I understand to cater this we need to go through our key manager. Just a thought. Can we give 2 options here: 1. For customers who want to validate subscription they can proxy only the validation call through our key manager. 2. For customers who don't want to validate subscriptions they can directly call the 3rd party key manager. This percentage could be quite low as I understand. May be there is no code changes required here. But it could be our guideline. What do you think? I haven't done a key manager extension myself. But as far as the runtime validation extension goes, what I understand is that it should be simple as one API call. The gateway calls the WSO2 key manager's validation API, which internally calls the 3rd party key manager's introspection API, gets the response, validates it, validates the subscription in the database, and returns validation response to gateway. Correct? I will check on the 3rd party key manager extension sample and get back if I find anything more complicated than this. > 3) Scopes are also not always supported by all IDPs and even when they do > only very few IDPs can map a resource against a scope. While standard IDPs > support introspection of tokens there is no such standard for validating > whether a given token bears the required scope to access a resource. > Therefore we again need to perform this validation on APIM. And in order to > do that you again have to get access to the storage where this information > is stored. The gateway in most cases doesn't have access to the storage > layer of APIM. > Ok. So this also should be covered by the validation call to the key manager in option 1 above. We can also add scope validation to our guideline of when to propose key manager extension. Thanks & Regards, Johann. > > On Thu, Mar 7, 2019 at 12:54 AM Johann Nallathamby > wrote: > >> APIM Team, >> >> I would like to understand what was the original reason we went with a >> 3rd party key manager extension in our key manager component, rather than >> giving the extensibility to integrate a 3rd party key manager at the >> gateway itself. >> >> What are the problems in supporting 3rd party Key Manager integrations >> directly from the API Gateway; avoiding the WSO2 Key Manager at all. We can >> provide a well designed OAuth2 security handler on the gateway, with >> template methods to extend and integrate 3rd party KMs? >> >> Pros: >> 1. Taking advantage of standards such as OAuth2/OpenID Connect which are >> supported by many vendors already, will reduce developer effort to >> understand protocols, will reduce development time and increase >> reusability. I feel like we are just complicating the process by going >> through a constricted API layer. >> 2. Higher level SPIs like handlers in the gateway are much easier to >> understand and more people have worked with those SPIs already for other >> purposes. >> 3. It gives you more flexibility to integrate with key manager, because >> there is more contextual information available in gateway. >> E.g. recently in a customer engagement I came across the requirement to >> integrate with multiple 3rd party key managers, based on hostname of the >> API request, using one gateway handler extension. >> 4. It is seen as a security vulnerability to share the access tokens and >> refresh tokens via a 3rd part component in between client and actual token >> provider. >> 5. We don't need to have our key manager in the deployment if we can >> directly integrate with the 3rd party key manager, which saves running cost >> for the customer. >> >> Cons: >> 1. The contract of the handler may not be as clear as the key manager >> extension, because it
Re: [Architecture] [APIM] Supporting 3rd Party Key Manager Integrations at API Gateway
If they do not want to use our KM, they can simply write a handler and achieve the requirement. On Thu, Mar 7, 2019 at 3:40 AM Nuwan Dias wrote: > There are several reasons. > > 1) It is not just the gateway but also the store that needs to communicate > with the IDP. So the integration point cannot be the gateway alone. > 2) Most customers sill want to validate the subscription in addition to > validating the token. The IDP will validate the token but APIM will have to > validate the subscription. The gateway cannot validate the subscription > directly since it requires access to the DB on which this data is stored. > 3) Scopes are also not always supported by all IDPs and even when they do > only very few IDPs can map a resource against a scope. While standard IDPs > support introspection of tokens there is no such standard for validating > whether a given token bears the required scope to access a resource. > Therefore we again need to perform this validation on APIM. And in order to > do that you again have to get access to the storage where this information > is stored. The gateway in most cases doesn't have access to the storage > layer of APIM. > > On Thu, Mar 7, 2019 at 12:54 AM Johann Nallathamby > wrote: > >> APIM Team, >> >> I would like to understand what was the original reason we went with a >> 3rd party key manager extension in our key manager component, rather than >> giving the extensibility to integrate a 3rd party key manager at the >> gateway itself. >> >> What are the problems in supporting 3rd party Key Manager integrations >> directly from the API Gateway; avoiding the WSO2 Key Manager at all. We can >> provide a well designed OAuth2 security handler on the gateway, with >> template methods to extend and integrate 3rd party KMs? >> >> Pros: >> 1. Taking advantage of standards such as OAuth2/OpenID Connect which are >> supported by many vendors already, will reduce developer effort to >> understand protocols, will reduce development time and increase >> reusability. I feel like we are just complicating the process by going >> through a constricted API layer. >> 2. Higher level SPIs like handlers in the gateway are much easier to >> understand and more people have worked with those SPIs already for other >> purposes. >> 3. It gives you more flexibility to integrate with key manager, because >> there is more contextual information available in gateway. >> E.g. recently in a customer engagement I came across the requirement to >> integrate with multiple 3rd party key managers, based on hostname of the >> API request, using one gateway handler extension. >> 4. It is seen as a security vulnerability to share the access tokens and >> refresh tokens via a 3rd part component in between client and actual token >> provider. >> 5. We don't need to have our key manager in the deployment if we can >> directly integrate with the 3rd party key manager, which saves running cost >> for the customer. >> >> Cons: >> 1. The contract of the handler may not be as clear as the key manager >> extension, because it is a more generic extension than the key manager >> extension; the key manager extension could be more tighter. But this can be >> improved by design patterns. >> >> I believe the pros out weigh the cons. If you think the key manager >> extension point is also important, then we can have two levels of extension >> points, and choose depending on what we think is the best for the >> requirement. >> >> What is your opinion on this? >> >> Thanks & Regards, >> Johann. >> >> -- >> *Johann Dilantha Nallathamby* | Associate Director/Solutions Architect | >> WSO2 Inc. >> (m) +94 (77) 7776950 | (w) +94 (11) 2145345 | (e) joh...@wso2.com >> [image: Signature.jpg] >> > > > -- > *Nuwan Dias* | Director | WSO2 Inc. > (m) +94 777 775 729 | (e) nuw...@wso2.com > [image: Signature.jpg] > ___ > Architecture mailing list > Architecture@wso2.org > https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture > -- *Harsha Kumara* Associate Technical Lead, WSO2 Inc. Mobile: +94775505618 Email: hars...@wso2.coim Blog: harshcreationz.blogspot.com GET INTEGRATION AGILE Integration Agility for Digitally Driven Business ___ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
Re: [Architecture] [APIM] Supporting 3rd Party Key Manager Integrations at API Gateway
There are several reasons. 1) It is not just the gateway but also the store that needs to communicate with the IDP. So the integration point cannot be the gateway alone. 2) Most customers sill want to validate the subscription in addition to validating the token. The IDP will validate the token but APIM will have to validate the subscription. The gateway cannot validate the subscription directly since it requires access to the DB on which this data is stored. 3) Scopes are also not always supported by all IDPs and even when they do only very few IDPs can map a resource against a scope. While standard IDPs support introspection of tokens there is no such standard for validating whether a given token bears the required scope to access a resource. Therefore we again need to perform this validation on APIM. And in order to do that you again have to get access to the storage where this information is stored. The gateway in most cases doesn't have access to the storage layer of APIM. On Thu, Mar 7, 2019 at 12:54 AM Johann Nallathamby wrote: > APIM Team, > > I would like to understand what was the original reason we went with a 3rd > party key manager extension in our key manager component, rather than > giving the extensibility to integrate a 3rd party key manager at the > gateway itself. > > What are the problems in supporting 3rd party Key Manager integrations > directly from the API Gateway; avoiding the WSO2 Key Manager at all. We can > provide a well designed OAuth2 security handler on the gateway, with > template methods to extend and integrate 3rd party KMs? > > Pros: > 1. Taking advantage of standards such as OAuth2/OpenID Connect which are > supported by many vendors already, will reduce developer effort to > understand protocols, will reduce development time and increase > reusability. I feel like we are just complicating the process by going > through a constricted API layer. > 2. Higher level SPIs like handlers in the gateway are much easier to > understand and more people have worked with those SPIs already for other > purposes. > 3. It gives you more flexibility to integrate with key manager, because > there is more contextual information available in gateway. > E.g. recently in a customer engagement I came across the requirement to > integrate with multiple 3rd party key managers, based on hostname of the > API request, using one gateway handler extension. > 4. It is seen as a security vulnerability to share the access tokens and > refresh tokens via a 3rd part component in between client and actual token > provider. > 5. We don't need to have our key manager in the deployment if we can > directly integrate with the 3rd party key manager, which saves running cost > for the customer. > > Cons: > 1. The contract of the handler may not be as clear as the key manager > extension, because it is a more generic extension than the key manager > extension; the key manager extension could be more tighter. But this can be > improved by design patterns. > > I believe the pros out weigh the cons. If you think the key manager > extension point is also important, then we can have two levels of extension > points, and choose depending on what we think is the best for the > requirement. > > What is your opinion on this? > > Thanks & Regards, > Johann. > > -- > *Johann Dilantha Nallathamby* | Associate Director/Solutions Architect | > WSO2 Inc. > (m) +94 (77) 7776950 | (w) +94 (11) 2145345 | (e) joh...@wso2.com > [image: Signature.jpg] > -- *Nuwan Dias* | Director | WSO2 Inc. (m) +94 777 775 729 | (e) nuw...@wso2.com [image: Signature.jpg] ___ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
Re: [Architecture] [APIM] Supporting 3rd Party Key Manager Integrations at API Gateway
If just the token authentication handlers in the gateway and filters in micro gateway are the way to go. However, if the expectation is integrated seamless flow with developer market place experience. There is an improvement in the store to obtain the tokens and generate directly from the 3rd party IDP. On Wed, Mar 6, 2019 at 11:24 AM Johann Nallathamby wrote: > APIM Team, > > I would like to understand what was the original reason we went with a 3rd > party key manager extension in our key manager component, rather than > giving the extensibility to integrate a 3rd party key manager at the > gateway itself. > > What are the problems in supporting 3rd party Key Manager integrations > directly from the API Gateway; avoiding the WSO2 Key Manager at all. We can > provide a well designed OAuth2 security handler on the gateway, with > template methods to extend and integrate 3rd party KMs? > > Pros: > 1. Taking advantage of standards such as OAuth2/OpenID Connect which are > supported by many vendors already, will reduce developer effort to > understand protocols, will reduce development time and increase > reusability. I feel like we are just complicating the process by going > through a constricted API layer. > 2. Higher level SPIs like handlers in the gateway are much easier to > understand and more people have worked with those SPIs already for other > purposes. > 3. It gives you more flexibility to integrate with key manager, because > there is more contextual information available in gateway. > E.g. recently in a customer engagement I came across the requirement to > integrate with multiple 3rd party key managers, based on hostname of the > API request, using one gateway handler extension. > 4. It is seen as a security vulnerability to share the access tokens and > refresh tokens via a 3rd part component in between client and actual token > provider. > 5. We don't need to have our key manager in the deployment if we can > directly integrate with the 3rd party key manager, which saves running cost > for the customer. > > Cons: > 1. The contract of the handler may not be as clear as the key manager > extension, because it is a more generic extension than the key manager > extension; the key manager extension could be more tighter. But this can be > improved by design patterns. > > I believe the pros out weigh the cons. If you think the key manager > extension point is also important, then we can have two levels of extension > points, and choose depending on what we think is the best for the > requirement. > > What is your opinion on this? > > Thanks & Regards, > Johann. > > -- > *Johann Dilantha Nallathamby* | Associate Director/Solutions Architect | > WSO2 Inc. > (m) +94 (77) 7776950 | (w) +94 (11) 2145345 | (e) joh...@wso2.com > [image: Signature.jpg] > -- *1G* ___ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
[Architecture] [APIM] Supporting 3rd Party Key Manager Integrations at API Gateway
APIM Team, I would like to understand what was the original reason we went with a 3rd party key manager extension in our key manager component, rather than giving the extensibility to integrate a 3rd party key manager at the gateway itself. What are the problems in supporting 3rd party Key Manager integrations directly from the API Gateway; avoiding the WSO2 Key Manager at all. We can provide a well designed OAuth2 security handler on the gateway, with template methods to extend and integrate 3rd party KMs? Pros: 1. Taking advantage of standards such as OAuth2/OpenID Connect which are supported by many vendors already, will reduce developer effort to understand protocols, will reduce development time and increase reusability. I feel like we are just complicating the process by going through a constricted API layer. 2. Higher level SPIs like handlers in the gateway are much easier to understand and more people have worked with those SPIs already for other purposes. 3. It gives you more flexibility to integrate with key manager, because there is more contextual information available in gateway. E.g. recently in a customer engagement I came across the requirement to integrate with multiple 3rd party key managers, based on hostname of the API request, using one gateway handler extension. 4. It is seen as a security vulnerability to share the access tokens and refresh tokens via a 3rd part component in between client and actual token provider. 5. We don't need to have our key manager in the deployment if we can directly integrate with the 3rd party key manager, which saves running cost for the customer. Cons: 1. The contract of the handler may not be as clear as the key manager extension, because it is a more generic extension than the key manager extension; the key manager extension could be more tighter. But this can be improved by design patterns. I believe the pros out weigh the cons. If you think the key manager extension point is also important, then we can have two levels of extension points, and choose depending on what we think is the best for the requirement. What is your opinion on this? Thanks & Regards, Johann. -- *Johann Dilantha Nallathamby* | Associate Director/Solutions Architect | WSO2 Inc. (m) +94 (77) 7776950 | (w) +94 (11) 2145345 | (e) joh...@wso2.com [image: Signature.jpg] ___ Architecture mailing list Architecture@wso2.org https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture