Hi, Adding an additional server profile adds additional complexity, and separating the config files may help clarify this. I highly recommend extensive comments describing the different configurations within the new xml file. Also, adding comments to the renamed api-validator section of the api-manager file would also be helpful.
In this new model, where would the authorize, revoke, and token gateway APIs point? Thanks, Colin Roy-Ehri Software Engineer *WSO2, Inc. : wso2.com <http://wso2.com/>* *Mobile* : 812-219-6517 On Mon, Apr 6, 2015 at 5:14 AM, Amila De Silva <[email protected]> wrote: > Hi All, > > Objective of this mail is to highlight the changes that needs to be done > in server profiles and in configuration files while implementing this > feature. > > As of now when Gateway receives a request, it talks to a server which > performs the following operations; > > 1. Get details of the access token by querying the Database. > 2. Check the validity of the token. > 3. Check if the user is subscribed to the API. > 4. Check if the token has necessary scopes to access the resource. > 5. Generate JWT using details derived from the token. > > In this design, the server to which GW calls is the same entity which > manages tokens. So calling this entity as Key Manager suits in this > scenario. > > After decoupling the Authorization server, the server to which GW calls, > will not be the same entity that manages tokens. To make this distinction > clear, a new profile will be introduced (which we'll refer to as Key > Validator for now). Basically GW calls to Key Validator which performs all > the above operations except 1st and 2nd. To complete its validation, Key > Validator obtains token details by calling to a Key Manager (Authorization > Server) - which can either be the one shipped with APIM or else a third > party one. > > > 1st Diagram illustrates the interaction between server profiles we > currently have and the second diagram shows the interactions after adding > the new profile. > > > > > Boxes in the diagram represent the profiles, not the server instances in a > deployment. When using the inbuilt KM, a typical deployment will have > KeyValidator and KeyManager profiles in the same JVM. All the server roles > except Gateway, will have to know about Key Manager. > > These are the changes happening in configuration files; > > 1. Key-Manager section in api-manager.xml will be changed as Key-Validator > a. TokenEndPointName and RevokeAPIURL elements will be removed from > Key-Validator section. > b. Two new elements ApplicationTokenScope & > KeyValidationHandlerClassName will be introduced. > > 2. A new config named key-manager.xml will be introduced. > Purpose of having this file is to provide a single location to keep all > the settings, configs used by a KeyManager implementation. > > This is the structure of the key-manager.xml to be shipped with APIM by > default. > > <KeyManager class="org.wso2.carbon.apimgt.keymgt.AMDefaultKeyManagerImpl" > xmlns="http://wso2.org/projects/apimgt/key-manager.xml"> > <Configuration> > <AuthorizationServerURL>https://localhost:9443/services/ > </AuthorizationServerURL> > <TokenURL>https://localhost:8243/token</TokenURL> > <RevokeURL>https://localhost:8243/revoke</RevokeURL> > </Configuration> > </KeyManager> > > Since generating/revoking tokens are done by the class implementing > KeyManager interface, those urls have been moved in to this config. > > Contents inside the <Configuration> block can change based on the > implementing class. For example, when plugging in an third party Key > Manager (Authorization Server), introspect endpoint might have to be > provided. > > Please share your thoughts. > > -- > *Amila De Silva* > > WSO2 Inc. > mobile :(+94) 775119302 > > > _______________________________________________ > Architecture mailing list > [email protected] > https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture > >
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
