�{�A�ڂł́A�ߔN���ڂ���Ă���F�v���g�R���uOpenID Connect�v���T�|�[�g����I�[�v���\�[�X�̃V���O���T�C���I���iSSO�j�\�t�g�E�F�A�uKeycloak�v�̊��p���@��������Ă����܂��B��1��ڂ́AAPI�ɂ�����F�^�F�̎d�g�݂�Keycloak�̊T�v���Љ�܂��B
�@�ߔN�A���Z�◬�ʕ���Œ��ڂ���Ă���uAPI�G�R�m�~�[�v��u�}�C�N���T�[�r�X�A�[�L�e�N�`���v�Ȃǂ̓o��ɂ��A�T�[�r�X�̋@�\���uREST API�v�Ƃ��Ē��邱�Ƃ�������O�ɂȂ��Ă��Ă��܂��B�����āAREST API�����J���邽�߂ɂ́A�N���A�N�Z�X���Ă����̂����m�F���邽�߂́u�F���iAuthentication�j�v�ƁAAPI�ւ̃A�N�Z�X��N�ɋ�����̂��Ƃ����u�F���iAuthorization�j�v�̎d�g�݂��s���ł��B
�@�������A�����̃T�[�r�X�����ꂼ��ʂɔF�^�����s���ƁA���[�U�[���^�p�X���[�h�Ƃ������F�؏���A�N�Z�X����|���V�[�̊Ǘ����ώG�ɂȂ��Ă��܂��܂��B�����ŁA��x�̔F�őS�ẴT�[�r�X�𗘗p�ł���悤�ɂ���d�g�݁u�V���O���T�C���I���iSSO�j�v���L�p�ɂȂ��Ă��܂��B
�@����܂ł̔F�^�F�̃A�[�L�e�N�`���ł́A1�̃T�[�r�X�ŔF���s�������ʂ��u�Z�b�V�����v�Ƃ��ĕێ����Ă����A���̃Z�b�V������p���ăA�N�Z�X�𐧌䂷��Ζ�肠��܂���ł����B�Ƃ��낪�A�}�C�N���T�[�r�X�A�[�L�e�N�`���̂悤�ɕ����̃T�[�r�X���������ē��삷��悤�ȃA�[�L�e�N�`���ł́A�T�[�r�X���ƂɔF�^�F���s���K�v�����邽�߁A�F�؏���A�N�Z�X����|���V�[�̊Ǘ����ώG�ɂȂ��Ă��܂��܂��B
�@�����ŁA�F�ƔF�̋@�\��API�T�[�o���番�����A���[�U�[���g�F�؍ς݁h�ł��邱�Ƃ������F�،��ʂ�A�N�Z�X�����Ȃǂ̔F����API�T�[�o�Ԃŋ��L���邱�ƂŁA�F�؏���A�N�Z�X����|���V�[���ꌳ�����A�Ǘ���e�Ղɂ��邱�Ƃ��ł��܂��i�}1�j�B
�@�����Łu�F����v�����Ƃ肷��ɂ́AAPI�T�[�o�A�G���h���[�U�[�A�F�v���o�C�_�[�̊ԂŎ菇�����߂�K�v������܂��B���̎菇���߂��v���g�R���̍ł��L���Ȃ��̂Ƃ��ẮuOAuth�v������܂��B
�@OAuth��Web�A�v���P�[�V�����ɂ��F���s�����߂̃I�[�v���ȃv���g�R���W���ł���A������Web�T�[�r�X�ŗ��p����Ă��܂��BOAuth�ł́u�F�v���o�C�_�[�v�ƌĂ��A�v���P�[�V�������A�F����A�v���P�[�V�����ɑ��ăA�N�Z�X�g�[�N���s���܂��i�}2�j�B�A�v���P�[�V�����͂��̃A�N�Z�X�g�[�N����p���邱�ƂŁAAPI�ւ̃A�N�Z�X��������܂��B
�@�������AOAuth�ł́A�A�N�Z�X�g�[�N�����N�ɑ��Ĕ��s���ꂽ�̂��͎d�l�ɋK�肳��Ă��炸�A����ɂ��g�g�[�N�������iauthorization code interception attack�j�h�ɂ��U�����\�ɂȂ鑼�A�K�肪�����܂��ł��邱�Ƃ���Z�L�����e�B�ɖ�肪�����Ă��܂��܂��B
�@���̂悤�Ȗ��������OAuth��⊮����V���v���ň��S�ȔF�̎d�l�Ƃ��āuOpenID Connect�i�ȉ��AOIDC�j�v�����ڂ���Ă��܂��BOIDC��OAuth�ɂ��F�ɉ����A�uID Token�v�Ƃ������؉\�ȃg�[�N���𗘗p���Ă��܂��BID Token�ɂ́uJSON Web Token�iJWT�j�v�Ƃ���������ϐ��̂���d�g�݂��p�����Ă���A�T�[�r�X�ԂŔF�؍ς݃��[�U�[��g�[�N�����s�ΏۂȂǂƂ������F�������S�ɋ��L�ł���悤�ɂȂ�܂��B
�@OIDC�ɂ��F�𗘗p����API�����J����ꍇ�AID Token�̔��s���s���F�v���o�C�_�[�̍\�z�ƁAAPI�T�[�o�ɂ��ID Token��������@�\�̒lj����K�v�ɂȂ�܂��B�����̋@�\���\�z���邽�߂ɁA����܂ł̓p�b�P�[�W�\�t�g�̗��p���قƂ�ǂł����B�������A�ߔN�ł̓I�[�v���\�[�X�\�t�g�E�F�A�iOSS�j�����p���i�Ɠ������x���ɂȂ��Ă��Ă���A�L�͂ȑI�����ƂȂ��Ă��܂��B�ȉ���OIDC�̔F�v���o�C�_�[�Ƃ��ē��삷����OSS�����̊T�v�������܂��B
�@�uOpenAM�v��Sun Microsystems�́uOpenSSO�v����ՂɊJ�����ꂽ�AJava�x�[�X�̔F�\�t�g�E�F�A�ł��B���p���i�Ƃ��ĊJ������Ă������߁A�M�����^���萫�������A�������т��L�x�ł��B
�@�������A2017�N7�����݁A�Â��o�[�W�����̃\�[�X�R�[�h�݂̂����J����Ă��邾���ŁA�R�~���j�e�B�[�x�[�X�̊J���͍s���Ă��܂���B�܂��A�t�H�[�N�ifork�F����j�̓����������AOSS�Ƃ��Ă̍��オ�s�����ȏł��邽�߁A��舵���ɂ͒��ӂ��K�v�ł��傤�B�Ȃ��A���p�łɂ��ẮA���݂������̊�Ƃ��p���I�ɊJ���A���i��ł��܂��B
�@�uGluu Server�v�͏��K�̓R�~���j�e�B�[�Ȃ���A�����ȊJ�����i�߂��Ă���\�t�g�E�F�A�ł��B���ɃN���C�A���g�������C�u�������[�����Ă���A���܂��܂Ȍ����t���[�����[�N�Ƀ��C�u��������Ă��܂��B
�@�uKeycloak�v�͔�r�I�V�����\�t�g�E�F�A�ŁA���݊����ɊJ�����s���Ă���I�[�v���\�[�X�v���W�F�N�g�ł��BOAuth�^OIDC�ɑΉ����A����OIDC�ɂ��Ă�OpenID Foundation���s���Ă���Certification Program�ɂ����āA�S�Ẵv���t�@�C���̔F����擾���Ă��܂��B���p�ł�Red Hat�ɂ��L���ł�����Ă���A���Œ܂ł��܂ގ�����T�|�[�g������܂��B�R�~���j�e�B�[�̊����x�������A���������L�]��OSS�ł��邽�߁A�{�e�ł͎��Keycloak�̉����i�߂܂��B
�@Keycloak�ihttp://www.keycloak.org/�j�́A�~�h���E�F�A�^�̔F�@�\��A�C�f���e�B�e�B�[�iID�j�Ǘ��@�\�������OSS�ł���A1�`2�J����1����x�Ń}�C�i�[�o�[�W�����A�b�v���s���Ă��܂��B2017�N7�����_�̍ŐV�o�[�W�����́u3.2.0.Final�v�ł��B
�@Keycloak�������ȋ@�\���\1�̒ʂ�ł��B�����̋@�\�́A�N���C�A���g�A�_�v�^�[�A�N���C�A���g�v���L�V�������A�S�ăA�v���P�[�V�����T�[�o��̃A�v���P�[�V�����i�ȉ��AKeycloak�T�[�o�j�Ƃ��Ē���Ă��܂��B
���� | �@�\ | �ڍ� |
---|---|---|
�F�� | ���g�ł̔F�� | ���[�U�[���F����^�C���p�X���[�h�ȂǁA�����̔F��g�ݍ��킹�邱�Ƃ��ł��� |
�f�B���N�g���T�[�o�A�g | OpenLDAP��Active Directory�Ƃ������f�B���N�g���T�[�r�X�ƘA�g�ł��� | |
�O��IdP�A�g | OpenID Connect�ɑΉ�����Identity Provider�iIdP�j�ɐڑ��ł��� | |
�F�� | �F�v���o�C�_�[ | OAuth��OIDC�Ƃ�������ʓI��API�F�v���g�R���ɑΉ��BWeb�T�[�r�X�x�[�X�̔F�iSAML�j�ɂ��Ή����� |
�N���C�A���g�v���L�V | ���o�[�X�v���L�V�Ƃ��ē��삵�A�o�b�N�G���h�̃A�v���P�[�V�����ɑ���OAuth�^OIDC�ɂ��A�N�Z�X������\�ɂ��� | |
�N���C�A���g�A�_�v�^�[ | �N���C�A���g���A�v���P�[�V�����ł̔F�擾��A�N�Z�X����Ƃ������@�\���A�����̃t���[�����[�N�ɑ��郉�C�u�����̌`�Œ��Ă��� | |
�\1�@Keycloak�������ȋ@�\ |
�@Keycloak��ID�Ǘ��@�\������Ă���A���[�U�[�F���s�����Ƃ��ł��܂��B���[�U�[�F�ɂ́AKeycloak���̂����F�؋@�\�̑��A�f�B���N�g���T�[�r�X�Ƃ̘A�g��O����Identity Provider�iIdP�j�𗘗p���邱�Ƃ��ł��܂��B
�@Keycloak�ł̓��[�U�[�^�p�X���[�h�ɂ��F�����łȂ��A�����^�C���p�X���[�h�Ȃǂ�g�ݍ��킹���u���v�f�F�v���������邱�Ƃ��ł��܂��B
�@Google��Facebook�Ƃ�����OIDC��IdP�Ƃ��ċ@�\����T�[�r�X�ƘA�g���邱�ƂŁA�F���O���ɈϏ����邱�Ƃ��ł��܂��B�܂��A�O���T�[�r�X�𗘗p���邾���łȂ��A����Keycloak�T�[�o��OIDC�ɑΉ�����IdP�Ƃ��A�g�ł��܂��B
�@Keycloak��OpenLDAP��Active Directory�Ƃ������f�B���N�g���T�[�r�X�ɐڑ����邱�ƂŁA�����̃��[�U�[����Keycloak�ɓ������邱�Ƃ��ł��܂��B�����̍ۂɂ́AKeycloak���Ǘ����郆�[�U�[�̑����ƁA�f�B���N�g���T�[�r�X�̎��ʖ��̃}�b�s���O��ݒ肷�邱�ƂŁA�����̏���Keycloak�ɓ������A���[�U�[�̔F���O���ɈϏ����邱�Ƃ��\�ɂȂ�܂��B�W���ł́ALDAP�iLightweight Directory Access Protocol�j�����Kerberos�ɑΉ������f�B���N�g���T�[�r�X�ƘA�g�ł��܂��B
�@Keycloak��OAuth��OpenID Connect�Ƃ������A��v��API�F�v���g�R���̃v���o�C�_�[�Ƃ��ċ@�\���A�T�[�h�p�[�e�B�[�A�v���P�[�V�����ɑ���A�N�Z�X������s�����Ƃ��ł��܂��BAPI�F�ȊO�ɂ��AWeb�T�[�r�X�x�[�X�̔F�v���g�R���iSAML�j�ɂ��Ή����Ă��܂��B
�@Keycloak��OAuth�̔F�T�[�o��AOpenID Connect��IdP�ł���F�v���o�C�_�[�Ƃ��ċ@�\���A�T�[�h�p�[�e�B�[�A�v���P�[�V�����ւ̃A�N�Z�X�g�[�N���̔��s��API�T�[�o�ւ̃A�N�Z�X����Ȃǂ̋@�\����܂��B�����̐ݒ��Web GUI��Web API�o�R�ōs�����Ƃ��ł��܂��B
�@�N���C�A���g�v���L�V��HTTP�̃��o�[�X�v���L�V�Ƃ��ē��삵�A�N���C�A���g�A�_�v�^�[��K�p�ł��Ȃ��o�b�N�G���h�̃A�v���P�[�V�����ɑ���OAuth�^OIDC�ɂ��A�N�Z�X�������܂��B
�@Keycloak�ł́A�N���C�A���g�A�_�v�^�[�ƌĂ�郉�C�u��������Ă��܂��B�N���C�A���g�A�_�v�^�[���A�v���P�[�V������T�[�o�ɓK�p���邱�ƂŁAKeycloak��F�T�[�o�AIdP�Ƃ����F������A�N�Z�X����������ł��܂��B
�@Keycloak�̓���ɂ�512MB�ȏ�̃������ƁA1GB�ȏ�̃f�B�X�N�e�ʂ��K�v�ł��B�܂��A�O��Ƃ��Ĉȉ��̃R���|�[�l���g���K�v�ɂȂ�܂��B
�R���|�[�l���g | ���� |
---|---|
Java | Oracle JDK 8�܂���Open JDK 8 |
�A�v���P�[�V�����T�[�o | JBoss EAP�܂���Wildfly |
�f�[�^�x�[�X | H2 Database�APostgreSQL�AMySQL�AOracle�Ȃǂ�RDBMS |
�@Keycloak��������OAuth�^OIDC�̋@�\�𗘗p���邱�ƂŁA�ی삳�ꂽ���\�[�X�����S��API�Ƃ��Č��J�ł���悤�ɂȂ�܂��B�ȍ~�́AOIDC�𗘗p����API�̌��J���������܂��i�}3�j�B�Ȃ��A�����ł�OAuth�Œ�`����Ă���4�̃O�����g�^�C�v�̂����A�F�R�[�h�O�����g�iAuthorization Code Flow�j�ɂ��A�N�Z�X�ɂ��Đ������܂��B�ڍׂ�RFC 6749���Q�Ƃ��Ă��������B
�@�i1�j���[�U�[��Keycloak�̃��O�C����ʂɃA�N�Z�X���AKeycloak�ɓo�^����Ă��郆�[�U�[�^�p�X���[�h�Ń��O�C������i�������́A�O����LDAP�T�[�o�ƘA�g���Ă̔F���\�j�B���O�C������������ƁAKeycloak�́u�F�R�[�h�v�Ƃ����l�����[�U�[�ɗ^����B
�@�i2�j���[�U�[�̓T�[�h�p�[�e�B�[�A�v���P�[�V�����ɑ��āA�F�R�[�h��t�������A�N�Z�X���s���B
�@�i3�j�T�[�h�p�[�e�B�[�A�v���P�[�V�����́A�F�R�[�h������Keycloak����A�N�Z�X�g�[�N����v������B�F�R�[�h���܂ޗv������������AKeycloak�̓A�N�Z�X�g�[�N����ԋp����B
�@�i4�j�T�[�h�p�[�e�B�[�A�v���P�[�V�����́AAPI�T�[�o�ɃA�N�Z�X����ۂɁA�擾�����g�[�N����v���Ɋ܂߂�B
�@�i5�jAPI�T�[�o�ł͑����Ă����A�N�Z�X�g�[�N���̓��e���`�F�b�N���邽�߁AKeycloak�Ɍ����v�����s���B���̌����v���̓N���C�A���g�A�_�v�^�[����������B�A�N�Z�X�g�[�N���̓��e����������A�T�[�h�p�[�e�B�[�A�v���P�[�V�����Ƀ��X�|���X���e��ԋp����B
�@�ȏ�̂悤�ɁA���[�U�[�̔F�؏��Ǘ���A�N�Z�X�g�[�N���̊Ǘ��A�A�N�Z�X����Ȃǂ̏����́AKeycloak����уN���C�A���g�A�_�v�^�[�ɈϏ����邱�Ƃ��ł��邽�߁AAPI�T�[�o�͕K�v�ŏ����̐ݒ��OIDC�ɂ��A�N�Z�X����������ł���悤�ɂȂ�܂��B
�@�����Keycloak�̃T���v���A�v���P�[�V�����𗘗p���āAKeycloak�̊ȒP�Ȏg�����̐����ƁAKeycloak�ɂ��API�F�����̓���������܂��B
������Г������쏊 OSS�\�����[�V�����Z���^�����B����܂ł̓\�t�g�E�F�A�G���W�j�A�Ƃ��ăX�g���[�W��T�[�o�̊Ǘ��\�t�g�E�F�A�J���ɏ]�����Ă����B���݂́A��ɃA�C�f���e�B�e�B�[�Ǘ�OSS��API�Ǘ�OSS�̌��A�����x�����s���Ă���B
Copyright © ITmedia, Inc. All Rights Reserved.